403Webshell
Server IP : 121.121.20.254  /  Your IP : 216.73.216.202
Web Server : Microsoft-IIS/10.0
System : Windows NT WEB-SERVER 10.0 build 20348 (Windows Server 2022) AMD64
User : IUSR ( 0)
PHP Version : 8.3.28
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/Python313/Lib/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/Python313/Lib/test/__pycache__/test_argparse.cpython-313.opt-1.pyc
�

��i����v�SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSK
r
SSKJr SSKJr SSKJr SSKJrJr SSKJr "SS\R.5r"S	S
\R25r"SS\R25r\R6"S
S\55r"SS\5r"SS\5r"SS\ 5r!Sr""SS\RF5r$"SS\%5r&\4r'\&"S\'05r("SS\(5r)"SS\(5r*"SS \(5r+"S!S"\(5r,"S#S$\(5r-"S%S&\(5r."S'S(\(5r/"S)S*\(5r0"S+S,\(5r1"S-S.\(5r2"S/S0\(5r3"S1S2\(5r4"S3S4\(5r5"S5S6\(5r6"S7S8\(5r7"S9S:\(5r8"S;S<\(5r9"S=S>\(5r:"S?S@\(5r;"SASB\(5r<"SCSD\(5r="SESF\(5r>"SGSH\(5r?"SISJ\(5r@"SKSL\(5rA"SMSN\(5rB"SOSP\(5rC"SQSR\(5rD"SSST\(5rE"SUSV\(5rF"SWSX\(5rG"SYSZ\(5rH"S[S\\(5rI"S]S^\(5rJ"S_S`\(5rK"SaSb\(5rL"ScSd\(5rM"SeSf\(5rN"SgSh\(5rO"SiSj\(5rP"SkSl\(5rQ"SmSn\(5rR"SoSp\5rS"SqSr\(5rT"SsSt\(5rU"SuSv\(5rV"SwSx\(5rW"SySz\(5rX"S{S|\(5rY"S}S~\(5rZ"SS�\(5r["S�S�\(5r\"S�S�\(5r]"S�S�\(5r^"S�S�\(5r_"S�S�\(5r`"S�S�\(5ra"S�S�\(5rb"S�S�\(5rc"S�S�\(5rd"S�S�\(5re"S�S�\(5rf"S�S�\(5rg"S�S�\(5rh"S�S�\(5ri"S�S�\(5rj"S�S�\(5rk"S�S�\(5rl"S�S�\(5rm"S�S�\(5rn"S�S�\(5ro"S�S�\(5rp"S�S�\(5rq"S�S�\(5rr"S�S�\(5rs"S�S�\(5rt"S�S�\(5ru"S�S�\(5rv"S�S�\(5rw"S�S�\(5rx"S�S�\(5ry"S�S�\(5rz"S�S�\(5r{"S�S�\(5r|"S�S�\(5r}"S�S�\(5r~"S�S�\(5r"S�S�\(5r�"S�S�\(5r�"S�S�\\(5r�"S�S�\\(5r�"S�S�\5r�\"5r�\"5r�"S�S�5r�\�"S�5r�\�"S�5r�\�"S�5r�\�"S�5r�\�"S�5r�\�"S�5r�"S�S�\5r�"S�S�\\(5r�"S�S�\\(5r�"S�S�\\(5r�"S�S�\5r�\GR&"S�S�\\(55r�\GR&"S�S�\\(55r�\GR&"S�S�\\(55r�\GR&"S�S�\�55r�"S�S�\5r�"S�S�\5r�"S�S�\(5r�"S�S�\(5r�"S�S�\(5r�"S�S�\5r�"S�S�\(5r�"S�S�\5r�"S�S�\(5r�"S�GS\5r�"GSGS\5r�"GSGS\5r�"GSGS\5r�"GSGS\5r�"GS	GS
\5r�"GSGS\�\5r�"GS
GS\�\5r�"GSGS\�\5r�"GSGS\�\5r�"GSGS\�\5r�"GSGS\�\5r�"GSGS\�\5r�"GSGS\�\5r�"GSGS\�\5r�"GSGS\�\5r�"GSGS \�\5r�"GS!GS"\�\5r�"GS#GS$\5r�"GS%GS&\�\�5r�"GS'GS(\�\�5r�"GS)GS*\�\�5r�"GS+GS,\�\�5r�"GS-GS.\�\�5r�"GS/GS0\�\�5r�"GS1GS2\�\�5r�"GS3GS4\�\�5r�"GS5GS6\5r�"GS7GS8\5r�"GS9GS:\5r�"GS;GS<\%5r�\4r'\�"GS=\'05r�"GS>GS?\�5r�"GS@GSA\�5r�"GSBGSC\�5r�"GSDGSE\�5r�"GSFGSG\�5r�"GSHGSI\�5r�"GSJGSK\�5r�"GSLGSM\�5r�"GSNGSO\�5r�"GSPGSQ\�5r�"GSRGSS\�5r�"GSTGSU\�5r�"GSVGSW\�5r�"GSXGSY\�5r�"GSZGS[\�5r�"GS\GS]\�5r�"GS^GS_\�5r�"GS`GSa\�5r�"GSbGSc\�5r�"GSdGSe\5r�"GSfGSg\�5r�"GShGSi\�5r�"GSjGSk\�5r�"GSlGSm\�5r�"GSnGSo\�5r�"GSpGSq\�5r�"GSrGSs\�5r�"GStGSu\�5r�"GSvGSw\�5r�"GSxGSy\�5r�"GSzGS{\�5r�"GS|GS}\�5r�"GS~GS\�5r�"GS�GS�\�5r�"GS�GS�\�5r�"GS�GS�\�5r�"GS�GS�\�5r�"GS�GS�\�5r�"GS�GS�\�5r�"GS�GS�\�5r�"GS�GS�\�5r�"GS�GS�\5r�"GS�GS�\5r�"GS�GS�\5r�"GS�GS�\5r�"GS�GS�\5r�"GS�GS�\5r�"GS�GS�\5r�"GS�GS�\5r�"GS�GS�\5r�"GS�GS�\5r�"GS�GS�\5r�"GS�GS�\5r�"GS�GS�\5r�"GS�GS�\5r�"GS�GS�\5r�"GS�GS�\5r�"GS�GS�\5r�"GS�GS�\5r�"GS�GS�\5r�"GS�GS�\5r�"GS�GS�\5r�"GS�GS�\5r�"GS�GS�\5Gr"GS�GS�\5GrGS�GrG\GS�:Xa]G\"\GR
5GS�:�a1\GR
GS�GS�:Xa\"\5 \GR"S5 \GR"5 gg(��N)�StrEnum)�captured_stderr)�	os_helper)�TestTranslationsBase�update_translation_snapshots)�mockc�6^�\rSrSrSrSU4SjjrSrSrU=r$)�StdIOBuffer�z�Replacement for writable io.StringIO that behaves more like real file

Unlike StringIO, provides a buffer attribute that holds the underlying
binary data, allowing it to replace sys.stdout/sys.stderr in more
contexts.
c�>�URS5n[TU]	[R"[R
"U55SUS9 g)N�utf-8)�newline)�encode�super�__init__�io�BufferedWriter�BytesIO)�self�
initial_valuer�	__class__s   ��'C:\Python313\\Lib\test\test_argparse.pyr�StdIOBuffer.__init__!s@���%�,�,�W�5�
�
����*�*�2�:�:�m�+D�E� �'�	�	3�c��UR5 URRR5R	S5$)Nr
)�flush�buffer�raw�getvalue�decode�rs rr�StdIOBuffer.getvalue&s-���
�
���{�{���'�'�)�0�0��9�9r�)��
)	�__name__�
__module__�__qualname__�__firstlineno__�__doc__rr�__static_attributes__�
__classcell__�rs@rr
r
s����3�
:�:rr
c� �\rSrSrSrSrSrg)�
StdStreamTest�+c��[R"5n[R"S5 [R
"S5 UR
SSS9 SSS5 SSS5 g!,(df   N=f!,(df   g=f)N�argparse._sys.exitr�foo)�status�message)�argparse�ArgumentParser�
contextlib�redirect_stderrr�patch�exit�r�parsers  r�test_skip_invalid_stderr�&StdStreamTest.test_skip_invalid_stderr-sX���(�(�*���&�&�t�,��J�J�+�,��K�K�q�%�K�0�
-�
-�,�,�,��
-�,�s#�A6�A%�A6�%
A3	�/A6�6
Bc��[R"5nURUR[R
"URS/54H�nURUS9 [R"S5 [5n[R"U5 [R"S5 U"5 URUR5S5 SSS5 SSS5 SSS5 SSS5 SSS5 M� g!,(df   N3=f!,(df   N<=f!,(df   NE=f!,(df   NN=f!,(df   GM=f)N�-h)�funcr2zusage:)r6r7�print_usage�
print_help�	functools�partial�
parse_args�subTestr8�redirect_stdoutr
r9rr:�assertRegexr)rr=rB�
mocked_stderrs    r�test_skip_invalid_stdout�&StdStreamTest.test_skip_invalid_stdout5s����(�(�*�����������f�/�/�$��8�
�D����$��'��*�*�4�0��
���*�*�=�9��
�
�/�0���� � ��!7�!7�!9�9�E�1�:��1�(�'�

�1�0��:�9���
��1�0��(�'�sl�!E
�8D9�D(	�D�1(D
�D�!D(	�)D9�1E
�
D�D�
D%�!D(	�(
D6
�2D9�9
E�E
�

E	r#N)r&r'r(r)r>rLr+r#rrr/r/+s
��1�Frr/c��\rSrSrSrSrg)�TestCase�Hc�V�UR[R"55nSUS'g)N�80�COLUMNS)�enterContextr�EnvironmentVarGuard�r�envs  r�setUp�TestCase.setUpJs&�����	� =� =� ?�@����I�rr#N)r&r'r(r)rXr+r#rrrOrOHs��rrOc�,�\rSrSrSrSrSrSrSrg)�TempDirMixin�Rc��[R"5Ul[R"5Ul[R"UR5 g�N)�tempfile�mkdtemp�temp_dir�os�getcwd�old_dir�chdirr!s rrX�TempDirMixin.setUpUs/�� �(�(�*��
��y�y�{���
������rc��[R"UR5 [R"URSS9H\upnUHPn[R
"[RRURU5[R5 MR M^ [R"URS5 g)NF)�topdownT)rbrerd�walkra�chmod�path�join�stat�S_IWRITE�shutil�rmtree)r�root�dirs�files�names     r�tearDown�TempDirMixin.tearDownZst��
�������!#�������!F��D������������d�m�m�T�:�D�M�M�J��"G�	�
�
�d�m�m�T�*rc���[RRURU5n[	USSS9nURU5 SSS5 U$!,(df   U$=f)N�wr
��encoding)rbrkrlra�open�write)r�filename�	file_path�files    r�create_writable_file�!TempDirMixin.create_writable_fileasN���G�G�L�L�����9�	�
�)�S�7�
3�t��J�J�x� �4���4�
3���s�A�
A!c�l�[R"URU5[R5 gr^)rbrjr�rm�S_IREAD)rr}s  r�create_readonly_file�!TempDirMixin.create_readonly_filegs��
����*�*�8�4�d�l�l�Cr)rdraN)	r&r'r(r)rXrur�r�r+r#rrr[r[Rs�� �
+��Drr[c��\rSrSrSrSrg)�Sig�jc��XlX lgr^��args�kwargs�rr�r�s   rr�Sig.__init__ls���	��rr�N�r&r'r(r)rr+r#rrr�r�js��rr�c�&�\rSrSrSrSrSrSrg)�NS�qc�:�URRU5 gr^)�__dict__�update)rr�s  rr�NS.__init__ss���
�
���V�$rc���[URR55nSRUVs/sHnSU-PM
 sn5n[	U5R
<SU<S3$s snf)Nz, z%s=%r�(�))�sortedr��itemsrl�typer&)r�sorted_items�tup�	kwarg_strs    r�__repr__�NS.__repr__vsU���d�m�m�1�1�3�4���I�I��E���w��}��E�F�	���:�.�.�	�:�:��Fs�A&c�0�[U5[U5:H$r^)�vars�r�others  r�__eq__�	NS.__eq__{s���D�z�T�%�[�(�(rr#N)r&r'r(r)rr�r�r+r#rrr�r�qs��%�;�
)rr�c��\rSrSrSSjrSrg)�ArgumentParserError�Nc�`�[RXX#5 XlX lX0lX@lgr^)�	Exceptionrr5�stdout�stderr�
error_code)rr5r�r�r�s     rr�ArgumentParserError.__init__�s&�����4�&�9�������$�r)r�r5r�r�)NNNr�r#rrr�r�s��%rr�c
�,�[[R[5(d#[[R[5(aU"U0UD6$[Rn[Rn[5[l[5[lU"U0UD6n[[
U55H�n[XV5nU[RLa[XVU5 M/U[RRLa[XV[US[55 MiU[RLa[XVU5 M�U[RRLdM�[XV[US[55 M� UU[lU[l$![a[nURn	[RR5n
[RR5n[SX�U	5SeSnAff=f!U[lU[lf=f)Nr�
SystemExit)�
isinstance�sysr�r
r��listr��getattr�setattrr�BIN_STDOUT_SENTINEL�BIN_STDERR_SENTINELr��coderr�)rGr�r��
old_stdout�
old_stderr�result�key�attr�er�r�r�s            r�stderr_to_parser_errorr��s����#�*�*�k�*�*�j����[�.Q�.Q��4�*�6�*�*����J����J���C�J���C�J� �	>���0��0�F��D��L�)���v�+���3�:�:�%��F��4��S�Z�Z�.�.�.��F���X�GZ�)[�\��S�Z�Z�'��F��4��S�Z�Z�.�.�.��F���X�GZ�)[�\�*�� ��
���
���	>��6�6�D��Z�Z�(�(�*�F��Z�Z�(�(�*�F�%��f�d�4�9=�
>��		>�� ��
���
�s,�CF� F�
G8�AG3�3G8�8G;�;Hc�@^�\rSrSrU4SjrU4SjrU4SjrSrU=r$)�ErrorRaisingArgumentParser�c�>>�[[U]
n[U/UQ70UD6$r^)rr�rGr�)rr�r�rGrs    �rrG�%ErrorRaisingArgumentParser.parse_args�s%����5�t�G�
�%�j�B�4�B�6�B�Brc�>>�[[U]
n[U/UQ70UD6$r^)rr�r;r�)rr�r�r;rs    �rr;�ErrorRaisingArgumentParser.exit�s%����/��;��%�d�<�T�<�V�<�<rc�>>�[[U]
n[U/UQ70UD6$r^)rr��errorr�)rr�r�r�rs    �rr�� ErrorRaisingArgumentParser.error�s%����0�$�=��%�e�=�d�=�f�=�=rr#)	r&r'r(r)rGr;r�r+r,r-s@rr�r��s���C�=�>�>rr�c��\rSrSrSrSrSrg)�ParserTesterMetaclass�aQAdds parser tests using the class attributes.

Classes of this type should specify the following attributes:

argument_signatures -- a list of Sig objects which specify
    the signatures of Argument objects to be created
failures -- a list of args lists that should cause the parser
    to fail
successes -- a list of (initial_args, options, remaining_args) tuples
    where initial_args specifies the string args to be parsed,
    options is a dict that should match the vars() of the options
    parsed out of initial_args, and remaining_args should be any
    remaining unparsed arguments
c��US:Xag[US5(d[5Ul[US5(d[UlSnSnSnSnSn"S	S
[
5n	XEU4Hn
Xx4HnU	"X
U5 M M g)N�ParserTestCase�parser_signature�parser_classc�b�UH)nUR"UR0URD6 M+ g)z(Add all arguments directly to the parserN)�add_argumentr�r�)r=�argument_signatures�sigs   r�	no_groups�1ParserTesterMetaclass.__init__.<locals>.no_groups�s'��*���#�#�S�X�X�<����<�+rc��URS5nUH)nUR"UR0URD6 M+ g)z4Add all arguments under a single group in the parserr3N)�add_argument_groupr�r�r�)r=r��groupr�s    r�	one_group�1ParserTesterMetaclass.__init__.<locals>.one_group�s7���-�-�e�4�E�*���"�"�C�H�H�;��
�
�;�+rc��[U5H?up#URSU-5nUR"UR0URD6 MA g)z0Add each argument in its own group to the parserzfoo:%iN)�	enumerater�r�r�r�)r=r��ir�r�s     r�many_groups�3ParserTesterMetaclass.__init__.<locals>.many_groups�sC��#�$7�8����1�1�(�Q�,�?���"�"�C�H�H�;��
�
�;�9rc�$�URU5$)z#Parse the args by passing in a list)rG)r=r�s  r�listargs�0ParserTesterMetaclass.__init__.<locals>.listargs�s���$�$�T�*�*rc��[RnUS/U-[lUR5U[l$!U[lf=f)z(Parse the args by defaulting to sys.argvr)r��argvrG)r=r��old_sys_argvs   r�sysargs�/ParserTesterMetaclass.__init__.<locals>.sysargs�s>���8�8�L�$�Q��(�4�/�C�H�
(��(�(�*�'����<���s	�?�
Ac�,�\rSrSrSrSrSrSrSrg)�0ParserTesterMetaclass.__init__.<locals>.AddTests�c�F�X lX0lURRnURRnURUR4H=nURnXtU4nSRU5n	U4Sjn
X�l[XU
5 M? g![a Nf=f)N�_c��U"U5 gr^r#�r�	test_funcs  r�wrapper�JParserTesterMetaclass.__init__.<locals>.AddTests.__init__.<locals>.wrapper�	��!�$�r)�_add_arguments�_parse_argsr&�
test_failures�test_successesrl�	TypeErrorr�)r�
tester_cls�
add_argumentsrG�add_arguments_name�parse_args_namer��	func_name�names�	test_namer�s           rr�9ParserTesterMetaclass.__init__.<locals>.AddTests.__init__s���&3�#�#-� �%)�%8�%8�%A�%A�"�"&�"2�"2�";�";��"&�"4�"4�d�6I�6I�!J�I� )� 2� 2�I�%�?�J�E� #�����I�09�(��+4�(��J�7�;�"K��%����s�<B�
B �B c��URRnURRnUR"U0UD6nUR	XAR
5 U$r^)r�r�r�r�r�r�)r�testerr�r�r=s     r�_get_parser�<ParserTesterMetaclass.__init__.<locals>.AddTests._get_parsersR���.�.�3�3���0�0�7�7���,�,�d�=�f�=���#�#�F�,F�,F�G��
rc�>�URU5nURHYnUR5nURUS9 UR	[
US9 UR
U5 SSS5 SSS5 M[ g!,(df   N=f!,(df   M~=f)N�r�)�msg)r�failures�splitrH�assertRaisesr�rG)rrr=�args_strr�s     rr��>ParserTesterMetaclass.__init__.<locals>.AddTests.test_failuress}���)�)�&�1�� &���H�#�>�>�+�D����T��2�#�0�0�1D�$�0�O�"�-�-�d�3�P�3�2�!0�P�O��3�2�s$�B
�A<�'B
�<
B
�B
�
B	c�2�URU5nURHdup4[U[5(aUR	5nURUS9 UR
X#5nURXE5 SSS5 Mf g!,(df   Mx=f)Nr)r�	successesr��strrrHr��assertEqual)rrr=r��expected_ns�	result_nss      rr��?ParserTesterMetaclass.__init__.<locals>.AddTests.test_successes"sz���)�)�&�1��)/�)9�)9�%�D�!�$��,�,�#�z�z�|�����T��2�$(�$4�$4�V�$B�	��*�*�;�B�3�2�*:�3�2�s�#B�
B	)r�r�N)	r&r'r(r)rrr�r�r+r#rr�AddTestsr��s��
<�&
�
4�
Crr)�hasattrr�r�r�r��object)�clsrt�bases�bodydictr�r�r�r�r�rr�rGs            rr�ParserTesterMetaclass.__init__�s����#�#���s�.�/�/�#&�5�C� ��s�N�+�+�9�C��
	=�
	<�	<�	+�	(�+	C�v�+	C�^(�K�@�M�'�1�
���Z�8�2�Arr#N)r&r'r(r)r*rr+r#rrr�r��s
��
�a9rr�r�c	�|�\rSrSrSr\"S5/r/SQrS\"SS94S\"S	S94S
\"S	S94S\"SS94S
\"SS94/r	Sr
g)�TestOptionalsSingleDashi8�1Test an Optional with a single-dash option string�-x)r �a�--foo�-x --fooz-x -yr$N��x�-x ar!�-xaz-x -1�-1z-x-1r#�r&r'r(r)r*r�r�r
r�rr+r#rrrr8sY��;��t�9�+��8�H�	�R�$�Z��	��c���	��S�	��	�"�t�*��	��d����Irrc�(�\rSrSrSr\"SSS9\"SSSS	9\"S
5/r/SQrS\"S
SSS94S\"SSSS94S\"S
SSS94S\"S
SSS94S\"SSSS94S\"SSSS94S\"SSSS94S\"SSSS94S\"S
SSS94S\"S
SSS94S\"SSSS94S\"SSSS94/r	Sr
g)�TestOptionalsSingleDashCombinediFrr �
store_true��actionz-yyy�store_const�*�r.�const�-z)r!r"r'r#z-x -zz-z -xz-yxz-yz az-yyyxz-yyyzaz-xyzaz-x=r$FN)r%�yyy�zT�-zar!�-z az-xzaz-xz az-x -zaz-x -z a�-yz-x -yyy -zaz-x -yyy -z ar#r)r#rrr+r+Fs	��;�	�D��&��F�=��3��D�	���
C�H�
�R�%�T�T�
*�+�	
�r�D�d�d�+�,�	��U���,�-�	��e���-�.�	��d���,�-�	�"�t���-�.�	�2��$�#�.�/�	�B��4�3�/�0�	
�r�E�r�T�*�+�	��e��t�,�-�	��T�r�S�1�2�	��d��c�2�3�
�Irr+c	�|�\rSrSrSr\"S5/r/SQrS\"SS94S\"S	S94S
\"SS94S\"S	S94S
\"S	S94/r	Sr
g)�TestOptionalsSingleDashLongi`zATest an Optional with a multi-character single-dash option string�-foo)r;r!r"z
-foo --fooz-foo -y�-fooar$N�r3z-foo ar!z-foo -1r(z-fo a�-f ar#r)r#rrr:r:`sY��K��v�;�-��G�H�	�R�D�\��	�2�#�;��	�B�4�L�!�	�"��+��	������Irr:c
���\rSrSrSr\"S5\"S5\"S5/r/SQrS\"SSSS	94S
\"SSSS	94S\"SSSS	94S
\"SSSS	94S\"SSSS	94S\"SSSS	94S\"SSSS	94/r	Sr
g)�&TestOptionalsSingleDashSubsetAmbiguousinz=Test Optionals where option strings are subsets of each other�-f�-foobar�-foorab)rAr;�-fo�-foo bz-foobz-foobaz-foorar$N)�f�foobar�foorabr>r!�-fa�-foa�oar<�ooa�	-foobar a�	-foorab ar#r)r#rrr@r@ns���G��t�9�c�)�n�c�)�n�E��K�H�	�R�$�t�D�
1�2�	��c�$�t�4�5�	��S��d�3�4�	��d�4��5�6�	�"�u�T�$�7�8�	�b�4��D�9�:�	�b�4��S�9�:��Irr@c��\rSrSrSr\"S5\"S5/r/SQrS\"SSS94S	\"S
SS94S\"S
SS94S\"SS
S94S
\"SS
S94S\"S
SS94S\"S
SS94S\"SS
S94S\"SS
S94S\"S
SS94S\"S
SS94S\"SS
S94S\"SS
S94/
r	Sr
g)� TestOptionalsSingleDashAmbiguousi~z7Test Optionals that partially match but are not subsetsrBrC)	rAr>rIrJr;rDrEz-f=az-foo=br$N)rGrHz-foob ar!z-foob=az-foor az-foor=az-fooba az-fooba=az-foora az-foora=arMz	-foobar=arNz	-foorab=ar#r)r#rrrPrP~s���A��y�>�3�y�>�:��"�H�
�R�t�D�
)�*�	�B�c�$�/�0�	�B�c�$�/�0�	�B�d�3�/�0�	�B�d�3�/�0�	�R�s�4�0�1�	�R�s�4�0�1�	�R�t�C�0�1�	�R�t�C�0�1�	�b��D�1�2�	�b��D�1�2�	�b��S�1�2�	�b��S�1�2��IrrPc�l�\rSrSrSr\"SSS9/r/SQrS\"SS	94S
\"SS	94S\"SS	94S
\"SS	94/r	Sr
g)�TestOptionalsNumerici�z(Test an Optional with a short opt stringr(�one��dest)r(r!z-1 --fooz-1 -yz-1 -1z-1 -2r$N)rSz-1 ar!z-1az-1-2�-2r#r)r#rrrRrR�sQ��2��t�%�0�1��A�H�	�R�D�\��	�����	��s���	�����	�IrrRc	�|�\rSrSrSr\"S5/r/SQrS\"SS94S\"S	S94S
\"S	S94S\"SS94S
\"SS94/r	Sr
g)�TestOptionalsDoubleDashi�z1Test an Optional with a double-dash option stringr")r"rAr>r!z--foo -xz--foo --barr$Nr=z--foo ar!z--foo=az
--foo -2.5z-2.5z
--foo=-2.5r#r)r#rrrXrX�sY��;��w�<�.��F�H�	�R�D�\��	�B�3�K� �	�B�3�K� �	�r�f�~�&�	�r�f�~�&��IrrXc��\rSrSrSr\"SSS9\"S5/r/SQrS\"S	S
S94S\"S	S
S94S\"SS
S94S\"SS
S94S\"SS
S94S\"SS
S94/r	Sr
g
)�#TestOptionalsDoubleDashPartialMatchi�z7Tests partial matching with a double-dash option string�--badgerr,r-z--bat)�--bar�--b�--ba�--b=2z--ba=4�	--badge 5r$FN)�badger�batz--bat X�X�--badT�--badg�--badger#r)r#rrrZrZ�s���A�	�J�|�,��G����H�H�	�R�u�$�
'�(�	�B�e��-�.�	�"�D�d�+�,�	�2�T�t�,�-�	�B�d��-�.�	�R�t��.�/�
�IrrZc��\rSrSrSr\"SSS9\"S5/r/SQrS\"S	S
S94S\"S	S
S94S\"S	S
S94S\"SS
S94S\"SS
S94S\"SS
S94S\"SS
S94/r	Sr
g
)�"TestOptionalsDoubleDashPrefixMatchi�z?Tests when one double-dash option string is a prefix of anotherr[r,r-r^)r\r]r^r_r`r$FN)ra�baz--ba Xrcz--ba=XrdTrerfr#r)r#rrrhrh�s���I�	�J�|�,��F����>�H�	�R�u��
&�'�	�2�U�s�+�,�	�2�U�s�+�,�	�"�D�T�*�+�	�2�T�d�+�,�	�B�d�t�,�-�	�R�t��-�.��Irrhc��\rSrSrSr\"SSS9\"S5\"SSS	S
9/r/SQrS\"S
SSS94S\"SSSS94S\"S
SSS94S\"SSSS94S\"SSS	S94S\"SSS	S94/r	Sr
g)�TestOptionalsSingleDoubleDashi�z<Test an Optional with single- and double-dash option stringsrAr,r-r\�-bazr/r0r1)r\�-fbarz-fbazz-bazf�-b B�Br$FN�rF�bar�bazTz--ba Broz
-f --bar Bz-f -bz-ba -fr#r)r#rrrkrk�s���F�	�D��&��G���F�=��3���
A�H�	�R�%�T�t�
,�-�	
�r�D�d��-�.�	�2��3�D�1�2�	�r�D�c�t�4�5�	�"�t��2�.�/�	�2��$�B�/�0�
�Irrkc���\rSrSrSr\"SSS9r\"SSS9\"S	5\"S
SSS
9/r/SQrS\	"SSSS94S\	"SSSS94S\	"SSSS94S\	"SSSS94S\	"SSSS94S\	"SSSS94/r
Srg)�!TestOptionalsAlternatePrefixCharsi�z9Test an Optional with option strings with custom prefixes�+:/F��prefix_chars�add_help�+fr,r-�::bar�/bazr/r0r1)r\rmrnrorA�--bar BrlrA�--helpz+hz::helpz/helpr$NrpT�::ba Bro�
+f ::bar B�+f /b�/ba +fr#�r&r'r(r)r*r�r�r�r
r�rr+r#rrrtrt�s���C����>���D��&��G���F�=��3���
q�H�	�R�%�T�t�
,�-�	
�r�D�d��-�.�	�2��3�D�1�2�	�r�D�c�t�4�5�	�"�t��2�.�/�	�2��$�B�/�0�
�Irrtc���\rSrSrSr\"SSS9r\"SSS9\"S	5\"S
SSS
9/r/SQrS\	"SSSS94S\	"SSSS94S\	"SSSS94S\	"SSSS94S\	"SSSS94S\	"SSSS94/r
Srg)�*TestOptionalsAlternatePrefixCharsAddedHelpi�z�When ``-`` not in prefix_chars, default operators created for help
should use the prefix_chars in use rather than - or --
http://bugs.python.org/issue9444ruTrvryr,r-rzr{r/r0r1)r\rmrnrorAr|rlr$FNrpr~rorr�r�r#r�r#rrr�r��s���+����=���D��&��G���F�=��3���
H�H�	�R�%�T�t�
,�-�	
�r�D�d��-�.�	�2��3�D�1�2�	�r�D�c�t�4�5�	�"�t��2�.�/�	�2��$�B�/�0�
�Irr�c
��\rSrSrSr\"SSS9r\"SSS9\"S	SS9\"S
SS9/r/SQrS\	"SSSS
94S\	"SSSS
94S\	"SSSS
94S\	"SSSS
94/r
Srg)�2TestOptionalsAlternatePrefixCharsMultipleShortArgsiz@Verify that Optionals must be called with their defined prefixesz+-Frvr r,r-z+yz+z)�-wz-xyzz+xr8z+xyzr$�r%�yr5Tz+y -xz+yz -xr#Nr�r#rrr�r�s���J���u�=���D��&��D��&��D��&���
�H�
�R�%�5�E�
*�+�	
�r�D�E�U�+�,�	�"�t�t�u�-�.�	�2����-�.�	�Irr�c	��\rSrSrSr\"SSSSSS9/r/S	QrS
\"SS94S\"S
S94S\"S
S94S\"S
S94S\"S
S94/r	Sr
g)�TestOptionalsShortLongi)z<Test a combination of single- and double-dash option strings�-v�	--verbose�-nz--noisyr,r-)z
--x --verbosez-Nr!z-v xr$F)�verboseTr#Nr)r#rrr�r�)sn��F�	�D�+�t�Y�|�D���4�H�	�R��
��	
�r�$�� �	�b��&�'�	
�r�$�� �	�B�t�$�%��Irr�c	��\rSrSrSr\"S5\"SSS9/rS/rS\"S	S
S94S\"S
S
S94S\"SSS94S\"SSS94/r	Sr
g
)�TestOptionalsDesti9z*Tests various means of setting destinationz	--foo-bar�--baz�zabbazrTr!z--foo-bar frFN)�foo_barr�z--baz g�gz--foo-bar h --baz i�hr�z--baz j --foo-bar k�k�jr#r)r#rrr�r�9sf��4��{�+�S��x�-H�I���u�H�	��3�t�4�5�	�B�t�C�0�1�	��3�s� ;�<�	��3�s� ;�<�	�Irr�c�p�\rSrSrSr\"S5\"SSS9/rS/rS\"S	SS
94S\"SSS
94S
\"S	SS
94/r	Sr
g	)�TestOptionalsDefaultiFz*Tests specifying a default for an Optionalr r8r0��defaultr!r$N�r%r�z-xxr%z-yyr�r#r)r#rrr�r�FsU��4��t�9�c�$��&;�<���u�H�	�R�$�"�
��	��S�B�� �	��T�S�!�"��Irr�c�R�\rSrSrSr\"S5/rSS/rS\"SS94S\"SS94/r	S	r
g)
�TestOptionalsNargsDefaultiRz7Tests not specifying the number of args for an Optionalr r!r$Nr$r&r#r)r#rrr�r�Rs9��A��t�9�+���T�{�H�	�R�$�Z��	��c����Irr�c�R�\rSrSrSr\"SSS9/rSS/rS\"SS	94S
\"S/S	94/r	Sr
g)�TestOptionalsNargs1i]z&Tests specifying 1 arg for an Optionalr ���nargsr!r$Nr$r&r#r)r#rrr�r�]s?��0��t�1�-�.���T�{�H�	�R�$�Z��	��s�e����Irr�c�T�\rSrSrSr\"SSS9/r/SQrS\"SS	94S
\"/SQS	94/r	Sr
g)
�TestOptionalsNargs3ihz'Tests specifying 3 args for an Optionalr �r�)r!r r&�-x a b�a -x�a -x br$Nr$z-x a b c�r!�b�cr#r)r#rrr�r�hs:��1��t�1�-�.��>�H�	�R�$�Z��	�R�/�*�+��Irr�c��\rSrSrSr\"SSS9\"SSSS9\"S	SS
S9\"SS\S
SS9/rS/rS\	"SSS
SS94S\	"SSS
SS94S\	"SSS
SS94S\	"SSS
SS94S\	"SSS
SS94S	\	"SSSSS94S\	"SSSSS94S\	"SSS
SS94S\	"SSS
SS94/	r
Srg)�TestOptionalsNargsOptionalisz0Tests specifying an Optional arg for an Optionalr��?r�r r0)r�r2r8�spam�r�r�r3�42�84)r�r�r2r��2r$N�T�rxr%r�r5z-w 2z-x 2z-y 2z-z 2�r#�r&r'r(r)r*r��intr�r
r�rr+r#rrr�r�ss���:�	�D����D��2�&��D��V�,��D��#�T�4�@�	���u�H�	�R�$�$�&�B�
/�0�	
�r�D�D�F�b�1�2�	��c�T�V�r�2�3�	
�r�D�B�&�B�/�0�	��d�c�V�r�2�3�	
�r�D�D�D�B�/�0�	��d�d�c�R�0�1�	
�r�D�D�F�b�1�2�	��d�d�f��2�3�
�Irr�c��\rSrSrSr\"SSS9\"SSSS9/rS	/rS
\"SSS94S\"/SS94S
\"S	/SS94S\"S	S/SS94S\"S/S94S\"SS	/S94S\"SS	S/S94/r	Sr
g)�TestOptionalsNargsZeroOrMorei��?Tests specifying args for an Optional that accepts zero or morer �*r�r8r�r�r!r$Nr�r&r�r��-y a�-y a br#r)r#rrr�r��s���I�	�D����D��V�,����u�H�	�R�$�&�
!�"�	
�r�B�&�!�"�	��s�e�v�&�'�	�2��c�
�f�-�.�	
�r�D�B�� �	��d�s�e�$�%�	�2���c�
�+�,��Irr�c
��\rSrSrSr\"SSS9\"SSSS9/r/S	QrS
\"SSS94S
\"S/SS94S\"SS/SS94S\"SS/S94S\"SSS/S94/r	Sr
g)�TestOptionalsNargsOneOrMorei�z>Tests specifying args for an Optional that accepts one or morer �+r�r8r�r�)r!r r8r�za -y br$Nr�r&r!r�r�r�r�r#r)r#rrr�r��s���H�	�D����D��V�,���3�H�	�R�$�&�
!�"�	��s�e�v�&�'�	�2��c�
�f�-�.�	��d�s�e�$�%�	�2���c�
�+�,��Irr�c��\rSrSrSr\"SSS9\"S\\"S5S9/r/S	Qr	S
\
"SSS94S
\
"SSS94S\
"SSS94S\
"SSS94S\
"SSS94S\
"SSS94/rSrg)�TestOptionalsChoicesi�z,Tests specifying the choices for an OptionalrA�abc��choicesz-g��r�r�)r!z-f dz-f abz-fadz-gaz-g 6r$N)rFr�r>r!z-f cr�z-g 0rz-g 03r�z-fb -g4r��r#�
r&r'r(r)r*r�r��ranger�r
r�rr+r#rrr�r��s���6�	�D�%� ��D�s�E�!�H�-�/��=�H�	�R�$�$�
� �	��c�T�"�#�	��c�T�"�#�	��d�a��!�	�"�t�q�/�"�	�B���N�#�
�Irr�c�R�\rSrSrSr\"S\SS9/rSS/rS\	"S	S
94S\	"SS
94/r
S
rg)�TestOptionalsRequiredi�z)Tests an optional action that is requiredr T�r��requiredr!r$�-x 1r�r$z-x42r0r#Nr�r#rrr�r��sE��3�	�D�s�T�*����R�y�H�	��a���	��b����Irr�c�P�\rSrSrSr\"SSS9/rSS/rS\"S	S
94S\"SS
94/r	S
r
g	)�TestOptionalsActionStorei�z&Tests the store action for an Optionalr �storer-r!r�r$Nr$z-xfoor3r#r)r#rrr�r��s=��0��t�G�4�5���V�}�H�	�R�$�Z��	�"�u�+���Irr�c�P�\rSrSrSr\"SS\S9/rS/rS\	"SS	94S\	"\S	94/r
S
rg)�TestOptionalsActionStoreConsti�z,Tests the store_const action for an Optionalr8r/r1r!r$N�r�r#)r&r'r(r)r*r�rr�r
r�rr+r#rrr�r��s=��6��t�M��H�I���u�H�	�R�$�Z��	
�r�F�|���Irr�c�P�\rSrSrSr\"SSS9/r/SQrS\"SS	94S\"S
S	94/r	Sr
g)
�TestOptionalsActionStoreFalsei�z,Tests the store_false action for an Optionalr3�store_falser-)r!r6r7r$T)r5Fr#Nr)r#rrr�r��s9��6��t�M�:�;��#�H�	�R�$�Z��	
�r�E�{���Irr�c�P�\rSrSrSr\"SSS9/r/SQrS\"SS	94S\"S
S	94/r	Sr
g)
�TestOptionalsActionStoreTruei�z+Tests the store_true action for an Optionalz--appler,r-)r!z	--apple=bz	--apple br$F)�appleTr#Nr)r#rrr�r��s9��5��y��>�?��.�H�	�R�e�_��	�B�T�N�#��Irr�c	��\rSrSrSr\"S\RS9/rSS/r	S\
"SS	94S\
"S
S	94S\
"SS	94S
\
"SS	94S\
"S
S	94/rSrSr
Srg)�TestBooleanOptionalActioni�zTests BooleanOptionalActionr"r-�	--foo bar�	--foo=barr$Nr=T�--no-fooFz--foo --no-fooz--no-foo --fooc��[R"5nUR[5nUR	SS[R
S9 SSS5 UR
S[WR55 g!,(df   N4=f)Nr"T�r2r.z*got an unexpected keyword argument 'const')	r6r7rr�r��BooleanOptionalAction�assertInr�	exception�rr=�cms   r�
test_const�$TestBooleanOptionalAction.test_constsc���(�(�*��
�
�
�y�
)�R�����t�H�<Z�<Z��[�*�	
�
�
�B�C����DU�V�*�
)�s� A9�9
Bc���[R"5nUR[5 UR	S[R
SS9 SSS5 UR[5 UR	S[R
[S9 SSS5 UR[5 UR	S[R
SS9 SSS5 UR[5 UR	S[R
SS9 SSS5 UR[5 UR	S[R
SS	9 SSS5 UR[5 UR	S
[R
SS	9 SSS5 g!,(df   GNE=f!,(df   GN=f!,(df   N�=f!,(df   N�=f!,(df   N�=f!,(df   g=f)N�-a)r.r��-b�-c)r.�metavar�-d�d�-e)r.r�rAr#)r6r7�assertWarns�DeprecationWarningr�r��boolr<s  r�test_deprecated_init_kw�1TestBooleanOptionalAction.test_deprecated_init_kws����(�(�*��
�
�
�0�
1������5�5��
 �
�2��
�
�0�
1������5�5��
 �
�2��
�
�0�
1������5�5��
 �
�2��
�
�0�
1������5�5��
 �
�2��
�
�0�
1������5�5��
 �
�2��
�
�0�
1������5�5��
 �
�2�
1�A2�
1��2�
1��2�
1��2�
1��2�
1��2�
1�sG� F	�($F�) F-�& F>�# G�  G �	
F�
F*�-
F;�>
G�
G� 
G.r#)r&r'r(r)r*r�r6r�r�r
r�rr�r�r+r#rrr�r��ss��%��w�x�/M�/M�N�O���[�)�H�	�R�D�\��	�"��,��	�R�E�]�#�	�2�%�=�)�	�2�$�<�(��I�W�)rr�c�d�\rSrSrSr\"SS\RS9/rS/r	S\
"SS94S\
"S	S94/rS
rg)�!TestBooleanOptionalActionRequiredi7z$Tests BooleanOptionalAction requiredr"T)r�r.r$r=r�Fr#N)
r&r'r(r)r*r�r6r�r�r
r�rr+r#rrr�r�7sI��.�	�G�d�8�+I�+I�J����t�H�	�"��,��	�R�E�]�#��Irr�c�d�\rSrSrSr\"SSS9/r/SQrS\"SS	94S
\"S/S	94S\"SS
/S	94/r	Sr
g)�TestOptionalsActionAppendiC�'Tests the append action for an Optionalr��appendr-�r!r��a --baz�	--baz a br$N�rr�--baz ar!�--baz a --baz br�r#r)r#rrr�r�CsL��1��w�x�8�9��5�H�	�R�D�\��	�B�C�5�M�"�	�B�C��:�.�/��Irr�c�l�\rSrSrSr\"SSS/S9/r/SQrS\"S/S	94S
\"SS/S	94S\"/S
QS	94/r	Sr
g)�$TestOptionalsActionAppendWithDefaultiOr�r�r�rc�r.r�rr$rrr!r)rcr!r�r#Nr)r#rrrrOsQ��1��w�x�#��G�H��5�H�	�R�S�E�]��	�B�C��:�&�'�	�B�?�3�4��Irrc��\rSrSrSr\"SSS9\"SSS9\"SSS9\"S	SS9/r/S
QrS\"SSSSS
94S\"S/SSSS
94S\"SS/SSS
94S\"SSSSS
94S	\"SSSSS
94/r	Sr
g)�!TestConstActionsMissingConstKwargi[z=Tests that const gets default value of None when not providedrA�append_constr-r"r�r/r\)z-f vr�r�r$N)rFr3r�rqr#r)r#rrr
r
[s���G�	�D��(��G�N�+��D��'��G�M�*�	��2�H�	�R�$�D�D�d�
3�4�	
�r�T�F���$�7�8�	�"�t�$��4�T�:�;�	
�r�D�d�d��5�6�	�"�t���4�8�9��Irr
c	�x�\rSrSrSr\"SS\S9\"SSSS	9/r/S
QrS\	"SS
94S\	"\/S
94S\	"\S\S/S
94/r
Srg)�TestOptionalsActionAppendConstin�-Tests the append_const action for an Optionalr�rr1r�r�r��r.rU�r!r�za -cz-bxz-b xr$N�r��-b -cx -b -cyzr%�yzr#�r&r'r(r)r*r�r�r�r
r�rr+r#rrr
r
nsf��7�	�D��y�9��D���,���2�H�	�R�$�Z��	
�r�Y�K� �!�	�2��C��D� A�B�C��Irr
c
��\rSrSrSr\"SS\S/S9\"SSS	S
9/r/SQrS\	"S/S
94S\	"S\/S
94S\	"S\S\S/S
94/r
Srg)�)TestOptionalsActionAppendConstWithDefaulti}rr�rrc)r.r2r�r�r�r�rrr$rrr%rr#Nrr#rrrr}sq��7�	�D��y�3�%�H��D���,���2�H�	�R�3�%�[��	
�r�S�)�$�%�&�	�2��i��i�� F�G�H��Irrc�P�\rSrSrSr\"SSS9/r/SQrS\"SS	94S\"S
S	94/r	Sr
g)�TestOptionalsActionCounti�z&Tests the count action for an Optionalr �countr-)r!r&z-x bz	-x a -x br$Nr$r�r#r)r#rrrr�s8��0��t�G�4�5��1�H�	�R�$�Z��	
�r�A�w���Irrc��\rSrSrSr\"S5\"S5\"SSS9/rSS	/rS
\"SSSS
94S\"SSSS
94S\"SSSS
94S\"SSSS
94S\"SSSS
94S\"SSSS
94/r	Sr
g)�"TestOptionalsAllowLongAbbreviationi�z2Allow long options to be abbreviated unambiguouslyr"�--foobaz�--foobler,r-z--foob 5�--foobr$NF)r3�foobaz�fooblez--foo 7�7z--foo=7z	--fooba ar!z	--fooba=az--foobl --foo gr�Tr#r)r#rrrr�s���<�	�G���J���J�|�,���
�H�%�H�	�R�D��e�
4�5�	�B�3�t�E�:�;�	�B�3�t�E�:�;�	�b�T�#�e�<�=�	�b�T�#�e�<�=�	�B�3�t�D�A�B�
�Irrc	��\rSrSrSr\"SS9r\"S5\"SSS9\"S	5/r/S
QrS\	"SSSS
94S\	"SSSS
94S\	"SSSS
94/r
Srg)�%TestOptionalsDisallowLongAbbreviationi��1Do not allow abbreviations of long options at allF��allow_abbrevr"�--foodler,r-�--foonly)�-foon 3z--foon 3�--foodz--food --foo 2r$N�r3�foodle�foonlyz--foo 3�3z--foonly 7 --foodle --foo 2r�Tr!r#r�r#rrr#r#�sr��;���.���G���J�|�,��J����
C�H�	�R�D��t�
4�5�	�B�3�u�T�:�;�	&��s�4��(L�M��Irr#c	��\rSrSrSr\"SSS9r\"S5\"SSS	9\"S
5/r/SQrS\	"S
SS
S94S\	"SSS
S94S\	"SSSS94/r
Srg
)�0TestOptionalsDisallowLongAbbreviationPrefixCharsi�zBDisallowing abbreviations works with alternative prefix charactersr�F�rwr&z++fooz++foodler,r-z++foonly)z+foon 3z++foon 3z++foodz++food ++foo 2r$Nr+z++foo 3r.z++foonly 7 ++foodle ++foo 2r�Tr!r#r�r#rrr0r0�st��L���%�@���G���J�|�,��J����
C�H�	�R�D��t�
4�5�	�B�3�u�T�:�;�	&��s�4��(L�M��Irr0c	��\rSrSrSr\"SS9r\"S5\"SSS9\"S	5/r/S
QrS\	"SSSS
94S\	"SSSS
94S\	"SSSS
94/r
Srg)�/TestOptionalsDisallowSingleDashLongAbbreviationi�r$Fr%r;z-foodler,r-z-foonly)r)z-foodz-food -foo 2r$Nr+z-foo 3r.z-foonly 7 -foodle -foo 2r�Tr!r#r�r#rrr3r3�sq��;���.���F���I�l�+��I����
4�H�	�R�D��t�
4�5�	�2�#�e�D�9�:�	#�R�C��S�%I�J��Irr3c��\rSrSrSr\"SS9r\"S5\"SSS9/rSS	/rS
\	"SSS94S
\	"SSS94S\	"SSS94S\	"SSS94S\	"SSS94S\	"SSS94/r
Srg)�/TestDisallowLongAbbreviationAllowsShortGroupingi�r$Fr%z-rr�rr-z-c -rr$N��rr�z-rar!z-rcc�ccz-ccr�z-cc -raz-ccrccr#r�r#rrr5r5�s���;���.���D�	��D��!����g��H�	�R�$�$�
� �	��S�D�!�"�	��d�d�#�$�	��T�Q�� �	�B���N�#�	�2���?�#�
�Irr5c��\rSrSrSr\"SSS9r\"S5\"SSS	9/rSS
/rS\	"SSS
94S\	"SSS
94S\	"SSS
94S\	"SSS
94S\	"SSS
94S\	"SSS
94/r
Srg)�5TestDisallowLongAbbreviationAllowsShortGroupingPrefixi�zEShort option grouping works with custom prefix and allow_abbrev=Falser�Fr1z+rz+crr-z+c +rr$Nr6z+rar!z+rccr8z+ccr�z+cc +raz+ccrccr#r�r#rrr:r:�s���O���%�@���D�	��D��!����g��H�	�R�$�$�
� �	��S�D�!�"�	��d�d�#�$�	��T�Q�� �	�B���N�#�	�2���?�#�
�Irr:c�<�\rSrSr"SS\5rSrSrSrSr	g)	�TestStrEnumChoicesic� �\rSrSrSrSrSrSrg)�TestStrEnumChoices.Colori�red�green�bluer#N)r&r'r(r)�RED�GREEN�BLUEr+r#rr�Colorr>s�������rrEc���[R"5nURSURS9 UR	SS/5nURURURR5 g)N�--colorr�r?)r6r7r�rErGr�colorrB�rr=r�s   r�test_parse_enum_value�(TestStrEnumChoices.test_parse_enum_value	sX���(�(�*�����I�t�z�z��:�� � �)�U�!3�4��������T�Z�Z�^�^�4rc���[R"5nURSURSS9 UR	SUR55 UR	SUR
55 g)NrGzChoose a color�r��helpz[--color {red,green,blue}]z  --color {red,green,blue})r6r7r�rEr��format_usage�format_helpr<s  r�'test_help_message_contains_enum_choices�:TestStrEnumChoices.test_help_message_contains_enum_choicessZ���(�(�*�����I�t�z�z�@P��Q��
�
�2�F�4G�4G�4I�J��
�
�2�F�4F�4F�4H�Irc��[R"SS9nURSURS9 UR	[R
SURSS/5 g)NF��
exit_on_errorrGr�z9invalid choice: 'yellow' \(choose from red, green, blue\)�yellow)r6r7r�rE�assertRaisesRegex�
ArgumentErrorrGr<s  r�$test_invalid_enum_value_raises_error�7TestStrEnumChoices.test_invalid_enum_value_raises_errorsT���(�(�u�=�����I�t�z�z��:�����"�"�H����
��!�		
rr#N)
r&r'r(r)rrErJrQrYr+r#rrr<r<s�����
5�J�
rr<c�D�\rSrSrSr\"S5/r/SQrS\"SS94/r	Sr
g)	�TestPositionalsNargsNonei#z,Test a Positional that doesn't specify nargsr3�r$r �a br!r=r#Nr)r#rrr\r\#s)��6��u�:�,�� �H�	�b�S�k���Irr\c�D�\rSrSrSr\"SSS9/r/SQrS\"S/S94/r	S	r
g
)�TestPositionalsNargs1i-z.Test a Positional that specifies an nargs of 1r3r�r�r]r!r=r#Nr)r#rrr`r`-s/��8��u�A�.�/�� �H�	�b�c�U�m���Irr`c�F�\rSrSrSr\"SSS9/r/SQrS\"SS	/S
94/r	Sr
g)
�TestPositionalsNargs2i7z.Test a Positional that specifies an nargs of 2r3r�r�)r$r!r �a b cr^r!r�r=r#Nr)r#rrrbrb7s2��8��u�A�.�/��'�H�	���S�z�"�#��Irrbc�b�\rSrSrSr\"SSS9/rS/rS\"/S94S	\"S	/S94S
\"S	S/S94/r	Sr
g
)�TestPositionalsNargsZeroOrMoreiAz0Test a Positional that specifies unlimited nargsr3r�r�r r$r=r!r^r�r#Nr)r#rrrereAsN��:��u�C�0�1���v�H�	�R�B�Z��	�b�c�U�m��	���S�z�"�#��Irrec�d�\rSrSrSr\"SSSS9/rS/rS\"SS	94S
\"S
/S	94S\"S
S/S	94/r	S
r
g)�%TestPositionalsNargsZeroOrMoreDefaultiMz>Test a Positional that specifies unlimited nargs and a defaultr3r�rqr�r r$r=r!r^r�r#Nr)r#rrrgrgMsP��H��u�C��?�@���v�H�	�R�E�]��	�b�c�U�m��	���S�z�"�#��Irrgc�V�\rSrSrSr\"SSS9/rSS/rS\"S/S	94S
\"SS/S	94/r	Sr
g
)�TestPositionalsNargsOneOrMoreiYz2Test a Positional that specifies one or more nargsr3r�r�r$r r!r=r^r�r#Nr)r#rrririYsD��<��u�C�0�1���D�z�H�	�b�c�U�m��	���S�z�"�#��Irric�P�\rSrSrSr\"SSS9/rSS/rS\"S	S
94S\"SS
94/r	Sr
g	)
�TestPositionalsNargsOptionalidzTests an Optional Positionalr3r�r�r r^r$Nr=r!r#r)r#rrrkrkds=��&��u�C�0�1���e�}�H�	�R�D�\��	�b�S�k���Irrkc�R�\rSrSrSr\"SSSS9/rSS/rS	\"SS
94S\"SS
94/r	Sr
g
)�#TestPositionalsNargsOptionalDefaultioz1Tests an Optional Positional with a default valuer3r�r0r�r r^r$r=r!r#Nr)r#rrrmrmos?��;��u�C��<�=���e�}�H�	�R�B�Z��	�b�S�k���Irrmc�T�\rSrSrSr\"SS\SS9/r/SQrS\	"S	S
94S\	"SS
94/r
S
rg)�,TestPositionalsNargsOptionalConvertedDefaultizzfTests an Optional Positional with a default value
that needs to be converted to the appropriate type.
r3r�r��r�r�r�)r r^�1 2r$r0r=�1r�r#Nr�r#rrrorozsE���
	�E��3��5���$�H�	�R�B�Z��	�b�Q�i���Irroc�T�\rSrSrSr\"S5\"S5/r/SQrS\"SSS	94/r	S
r
g)�TestPositionalsNargsNoneNonei�z-Test two Positionals that don't specify nargsr3rq)r$r r!rcr^r!r��r3rqr#Nr)r#rrrtrt�s3��7��u�:�s�5�z�2��'�H�	��s��$�%��Irrtc�T�\rSrSrSr\"S5\"SSS9/r/SQrS\"S	S
/S94/r	Sr
g
)�TestPositionalsNargsNone1i�z6Test a Positional with no nargs followed by one with 1r3rqr�r�)r$r"r!rcr^r!r�rur#Nr)r#rrrwrw�s8��@��u�:�s�5��':�;��*�H�	��s���&�'��Irrwc�V�\rSrSrSr\"SSS9\"S5/r/SQrS\"S	S
/SS94/r	S
r
g)�TestPositionalsNargs2Nonei�z8Test a Positional with 2 nargs followed by one with noner3r�r�rq�r$r"r!r^�a b c drcr!r�r�rur#Nr)r#rrryry�s:��B��u�A�.��E�
�;��3�H�	�"�#�s���-�.��Irryc�.�\rSrSrSr\"S5\"S5\"SSS9/r/SQrS	\"S
S	/S94S\"S
S	S
/S94S\"S
S	S
S/S94S\"SS	/S94S\"SS	/S94S\"SS	S
/S94S\"SS	S
/S94S\"SS	S
/S94S\"SS	S
S/S94S\"SS	S
S/S94S\"SS	S
S/S94/r	Sr
g
)�"TestPositionalsNargsNoneZeroOrMorei�z>Test a Positional with no nargs followed by one with unlimitedr r3rqr�r�)r$r"�
a b -x X cr!N�r%r3rqr^r�rcr��-x X arc�a -x X�-x X a b�a -x X b�a b -x X�
-x X a b c�
a -x X b c�
a b c -x Xr#r)r#rrr}r}�s��H��t�9�c�%�j�#�e�3�2G�H��*�H�	�b�4�S�b�)�*�	��T�s���.�/�	�"�t��3��*�5�6�	�2���"�-�.�	�2���"�-�.�	�R�#�3�S�E�2�3�	�R�#�3�S�E�2�3�	�R�#�3�S�E�2�3�	�r�C�S�s�C�j�9�:�	�r�C�S�s�C�j�9�:�	�r�C�S�s�C�j�9�:��Irr}c��\rSrSrSr\"S5\"S5\"SSS9/r/SQrS	\"S
SS/S
94S\"S
SSS/S
94S\"SSS/S
94S\"SSS/S
94S\"SSS/S
94S\"SSSS/S
94S\"SSSS/S
94S\"SSSS/S
94/r	Sr
g
)�!TestPositionalsNargsNoneOneOrMorei�z@Test a Positional with no nargs followed by one with one or morer r3rqr�r��r$r"r!r~r^Nr!r�rrcr�r�rcr�r�r�r�r�r#r)r#rrr�r��s���J��t�9�c�%�j�#�e�3�2G�H��/�H�	��T�s���.�/�	�"�t��3��*�5�6�	�R�#�3�S�E�2�3�	�R�#�3�S�E�2�3�	�R�#�3�S�E�2�3�	�r�C�S�s�C�j�9�:�	�r�C�S�s�C�j�9�:�	�r�C�S�s�C�j�9�:�	�Irr�c
���\rSrSrSr\"S5\"S5\"SSS9/r/SQrS	\"S
S	S
S94S\"S
S	S
S94S\"SS	S
S94S\"SS	S
S94S\"SS	S
S94S\"SS	S
S94S\"SS	S
S94/r	Sr
g
)� TestPositionalsNargsNoneOptionali�z@Test a Positional with no nargs followed by one with an Optionalr r3rqr�r��r$r"rcr!Nrr^r�r�rcr�r�r�r�r#r)r#rrr�r��s���J��t�9�c�%�j�#�e�3�2G�H��%�H�	�b�4�S�d�+�,�	��T�s��,�-�	�2���$�/�0�	�2���$�/�0�	�R�#�3�C�0�1�	�R�#�3�C�0�1�	�R�#�3�C�0�1��Irr�c��\rSrSrSr\"S5\"SSS9\"S5/r/SQrS	\"S
/S	S94S\"S
S	/S
S94S\"S
S	S
/SS94S\"S/S	S94S\"S/S	S94S\"SS	/S
S94S\"SS	/S
S94S\"SS	S
/SS94S\"SS	S
/SS94/	r	Sr
g
)�"TestPositionalsNargsZeroOrMoreNonei�z@Test a Positional with unlimited nargs followed by one with noner r3r�r�rq)r$r"r�r�r~r!Nrr^r�rcr�r�rcr�r�r�r�r�r#r)r#rrr�r��s���J��t�9�c�%�s�&;�S��Z�H��D�H�	�b�4�R�S�)�*�	��T��u�#�.�/�	�"�t�#�s���5�6�	�2����-�.�	�2����-�.�	�R�#�C�5�c�2�3�	�R�#�C�5�c�2�3�	�r�C�c�3�Z�S�9�:�	�r�C�c�3�Z�S�9�:�
�Irr�c
���\rSrSrSr\"S5\"SSS9\"S5/r/SQrS	\"S
S/SS
94S\"S
SS/SS
94S\"SS/SS
94S\"SS/SS
94S\"SS/SS
94S\"SSS/SS
94S\"SSS/SS
94/r	Sr
g
)�!TestPositionalsNargsOneOrMoreNonei�zBTest a Positional with one or more nargs followed by one with noner r3r�r�rq)r$r"r!r�r~r^Nr!r�rrcr�r�rcr�r�r�r�r#r)r#rrr�r��s���L��t�9�c�%�s�&;�S��Z�H��=�H�	��T��u�#�.�/�	�"�t�#�s���5�6�	�R�#�C�5�c�2�3�	�R�#�C�5�c�2�3�	�R�#�C�5�c�2�3�	�r�C�c�3�Z�S�9�:�	�r�C�c�3�Z�S�9�:��Irr�c�d�\rSrSrSr\"SSSS9\"S5/r/SQrS	\"SS	S
94S\"S	SS
94/r	S
r
g)� TestPositionalsNargsOptionalNonei�zBTest a Positional with an Optional nargs followed by one with noner3r�r0r�rqr�r!rur^r�r#Nr)r#rrr�r��sG��L��u�C��<�c�%�j�I��%�H�	�b�R�S�!�"�	��s��$�%��Irr�c�j�\rSrSrSr\"SSS9\"SSS9/r/SQrS	\"S
S//S94S
\"S
S/S/S94/r	Sr
g)�TestPositionalsNargs2ZeroOrMorei	z=Test a Positional with 2 nargs followed by one with unlimitedr3r�r�rqr��r$r"r!r^r!r�rurcr�r#Nr)r#rrr�r�	sR��G��u�A�.��E��0E�F��!�H�	���S�z�r�*�+�	�"�#�s��#��/�0��Irr�c�V�\rSrSrSr\"SSS9\"SSS9/r/SQrS	\"S
S/S/S
94/r	Sr
g)�TestPositionalsNargs2OneOrMoreiz?Test a Positional with 2 nargs followed by one with one or morer3r�r�rqr�)r$r"r!r^rcr!r�r�rur#Nr)r#rrr�r�s?��I��u�A�.��E��0E�F��(�H�	�"�#�s��#��/�0��Irr�c�h�\rSrSrSr\"SSS9\"SSS9/r/SQrS	\"S
S/SS
94S\"S
S/SS
94/r	Sr
g)�TestPositionalsNargs2Optionaliz7Test a Positional with 2 nargs followed by one optionalr3r�r�rqr�)r$r"r!r{r^r!r�Nrurcr�r#r)r#rrr�r�sP��A��u�A�.��E��0E�F��,�H�	���S�z�t�,�-�	�"�#�s���-�.��Irr�c�|�\rSrSrSr\"SSS9\"SSS9/rSS	/rS
\"/S
/S94S\"S
/S
/S94S\"S
S
/S/S94/r	Sr
g)�TestPositionalsNargsZeroOrMore1i)z=Test a Positional with unlimited nargs followed by one with 1r3r�r�rqr�r$r"r!rur^r�rcr�r#Nr)r#rrr�r�)sg��G��u�C�0�#�e�1�2E�F���G��H�	�b�R�c�U�#�$�	���u�3�%�(�)�	�"�#�s��#��/�0��Irr�c�j�\rSrSrSr\"SSS9\"SSS9/r/SQrS	\"S
/S/S94S
\"S
S/S/S94/r	Sr
g)�TestPositionalsNargsOneOrMore1i5z?Test a Positional with one or more nargs followed by one with 1r3r�r�rqr�r�r^r!r�rurcr�r#Nr)r#rrr�r�5sR��I��u�C�0�#�e�1�2E�F��!�H�	���u�3�%�(�)�	�"�#�s��#��/�0��Irr�c�d�\rSrSrSr\"SSS9\"SSS9/r/SQrS	\"S
S	/S94S\"S	S
/S94/r	Sr
g
)�TestPositionalsNargsOptional1i@z?Test a Positional with an Optional nargs followed by one with 1r3r�r�rqr�r�r!Nrur^r�r#r)r#rrr�r�@sL��I��u�C�0�#�e�1�2E�F��%�H�	�b�T��u�%�&�	��s���&�'��Irr�c��\rSrSrSr\"S5\"S5\"SSS9\"SS	S9/r/S
QrS\"SS
/S/S94S\"SS
S/S/S94S\"SS
/S/S94S\"SS
/S/S94S\"SS
/S/S94S\"SS
S/S/S94S\"SS
S/S/S94S\"SS
S/S/S94/r	Sr
g)�#TestPositionalsNargsNoneZeroOrMore1iKz=Test three Positionals: no nargs, unlimited nargs and 1 nargsr r3rqr�r�rrr�r�r^Nr!r��r%r3rqrrrcr�r�rcr�r�r�r�r�r#r)r#rrr�r�Ks���G�	�D�	��E�
��E����E���	��0�H�	��T�s����6�7�	�"�t��3�%�c�U�;�<�	�R�#�3�B�S�E�:�;�	�R�#�3�B�S�E�:�;�	�R�#�3�B�S�E�:�;�	�r�C�S�s�e�#��?�@�	�r�C�S�s�e�#��?�@�	�r�C�S�s�e�#��?�@�	�Irr�c�<�\rSrSrSr\"S5\"S5\"SSS9\"SS	S9/r/S
QrS\"SS
S/S/S94S\"SS
SS/S/S94S\"SS
S/S/S94S\"SS
S/S/S94S\"SS
S/S/S94S\"SS
S/S/S94S\"SS
SS/S/S94S\"SS
SS/S/S94S\"SS
SS/S/S94/	r	Sr
g)�"TestPositionalsNargsNoneOneOrMore1iaz?Test three Positionals: no nargs, one or more nargs and 1 nargsr r3rqr�r�rrr�)r$r"r!r�za b -x X c dza b c -x X drcNr!r�r�r�r{r�r�rcr�r~r�z-x X a b c dza -x X b c dza b c d -x Xr#r)r#rrr�r�as��I�	�D�	��E�
��E����E���	��G�H�	�"�t��3�%�c�U�;�<�	�B��3�S�#�J�S�E�B�C�	�r�C�S�s�e�#��?�@�	�r�C�S�s�e�#��?�@�	�r�C�S�s�e�#��?�@�	�r�C�S�s�e�#��?�@�	��c�s��c�
���F�G�	��c�s��c�
���F�G�	��c�s��c�
���F�G�
�Irr�c��\rSrSrSr\"S5\"S5\"SSSS9\"S	S
S9/r/SQrS
\"SSSS/S94S\"SSSS/S94S\"SSSS/S94S\"SSSS/S94S\"SSSS/S94S\"SSSS/S94S\"SSSS/S94S\"SSSS/S94/r	Sr
g)�!TestPositionalsNargsNoneOptional1ixz;Test three Positionals: no nargs, optional narg and 1 nargsr r3rqr���?r�rrr�r�r�r^Nr!r�r�rcr�r�rcr�r�r�r�r�r#r)r#rrr�r�xs���E�	�D�	��E�
��E��e�,��E���	��0�H�	��T�s��C�5�9�:�	�"�t��#�C�5�9�:�	�R�#�3�E��u�=�>�	�R�#�3�E��u�=�>�	�R�#�3�E��u�=�>�	�r�C�S�c��u�=�>�	�r�C�S�c��u�=�>�	�r�C�S�c��u�=�>�	�Irr�c�r�\rSrSrSr\"SSS9\"SSSS9/rS	S
/rS\"SSS
94S\"SSS
94S\"SSS
94/r	Sr
g)�$TestPositionalsNargsOptionalOptionali�zTest two optional nargsr3r�r�rqr0r�r"rcr$Nrur!r^r�r#r)r#rrr�r��se��!�	�E����E��b�)�����!�H�	�R�D�b�
!�"�	�b�S�b�!�"�	��s��$�%��Irr�c	��\rSrSrSr\"SSS9\"SSS9/rS/rS	\"S
/S94S\"S/S94S
\"SS/S94S\"SSS/S94/r	Sr
g
)�&TestPositionalsNargsOptionalZeroOrMorei�z1Test an Optional narg followed by unlimited nargsr3r�r�rqr�r"r$Nrur!r^r�rcr�r#r)r#rrr�r��sn��;��u�C�0�#�e�3�2G�H���y�H�	�R�D�b�
!�"�	�b�S�b�!�"�	��s���&�'�	�"��3��*�-�.�	�Irr�c�x�\rSrSrSr\"SSS9\"SSS9/rSS	/rS
\"SS
/S94S
\"S
S/S94S\"S
SS/S94/r	Sr
g)�%TestPositionalsNargsOptionalOneOrMorei�z3Test an Optional narg followed by one or more nargsr3r�r�rqr�r$r"r!Nrur^r�rcr�r#r)r#rrr�r��sc��=��u�C�0�#�e�3�2G�H���G�}�H�	�b�T��u�%�&�	��s���&�'�	�"��3��*�-�.��Irr�c�\�\rSrSrSr\"S\"S5S9/r/SQrS\	"SS94S	\	"S	S94/r
S
rg)�TestPositionalsChoicesStringi�z&Test a set of single-character choicesr��abcdefgr��r$r"r�r��efr!�r�r�r#N)r&r'r(r)r*r��setr�r
r�rr+r#rrr�r��s=��0��v�s�9�~�>�?��-�H�	�b�c�l��	�b�c�l���Irr�c�^�\rSrSrSr\"S\\"S5S9/r/SQr	S\
"SS	94S
\
"SS	94/rSrg
)�TestPositionalsChoicesInti�zTest a set of integer choicesr��r�r��4r�r��15�r#Nr�r#rrr�r��s?��'��v�C��r��C�D��-�H�	�b�a�j��	
�r�r�{���Irr�c�X�\rSrSrSr\"SSS9\"SSSS9/r/SQrS	\"S
SS//S
94/r	Sr
g)�TestPositionalsActionAppendi�zTest the 'append' actionr�r�r-r��r.r�rzrcr!r�r�r�r#Nr)r#rrr�r��sI��"�	�F�8�$��F�8�1�-���4�H�	�"�3��c�
�+�,�-��Irr�c�T�\rSrSrSr\"SSS9\"SSSS9/r/SQrS	\"/S
QS94/r	Sr
g
)�TestPositionalsActionExtendi�zTest the 'extend' actionr��extendr-r�r�rzrcr�r�r#Nr)r#rrr�r��s@��"�	�F�8�$��F�8�1�-���4�H�	�"�/�*�+��Irr�c	��\rSrSrSr\"SSS9\"SSSS	9/rS
S/rS\"S
SS94S\"SSS94S\"S
SS94S\"SSS94/r	Sr
g
)�"TestOptionalsNumericAndPositionalsi�z;Tests negative number args when numeric options are presentr%r�r�z-4r�r,�rUr.rVz-315r$NFr�r!Tz-4 ar#r)r#rrr�r��ss��E�	�C�s���D�s�<�0����f�~�H�	�R�$�%�
 �!�	�b�3�%� �!�	
�r�D�D�!�"�	��c�T�"�#�	�Irr�c
��\rSrSrSr\"SSS9\"SSSS	9/rS
/rS\"SS
S94S\"SS
S94S\"SS
S94S\"SSS94S\"SSS94/r	Sr
g)�(TestOptionalsAlmostNumericAndPositionalsi�zBTests negative number args when almost numeric options are presentr%r�r�z-k4r�r,r�z-k3r$NFr�rVr!Tz-k4 ar#r)r#rrr�r��s���L�	�C�s���E��L�1����w�H�	�R�$�%�
 �!�	
�r�D�E�"�#�	�b�3�%� �!�	��T�T�"�#�	�"�s�d�#�$��Irr�c�~�\rSrSr\"SSSS9\"S5/rS/rS\"S	S
//SS94S
\"S
//S	S94S\"S	S
//SS94/rSr	g)�!TestOptionalsAndPositionalsAppendi
r3r�r��r�r.r\r;r^r!r�Nru�	--bar a b�a b --bar cr�r#�
r&r'r(r)r�r�r
r�rr+r#rrr�r�
sj���E��X�.��G�����x�H�	���c�
�|��.�/�	�b�s�e�W�#�.�/�	���c�
�|��5�6��Irr�c�x�\rSrSr\"SSSS9\"S5/rS/rS\"S	S
/SS94S
\"S
/S	S94S\"S	S
/SS94/rSr	g)�!TestOptionalsAndPositionalsExtendir3r�r�r�r\r;r^r!r�Nrur�r�r�r#r�r#rrr�r�sd���E��X�.��G�����x�H�	���S�z�t�,�-�	�b�c�U��,�-�	���S�z�s�3�4��Irr�c
���\rSrSr\"SSS9\"SSSS9/rS/rS	/\"S	S
S94S/\"SS
S94S
/\"S
S
S94SS	/\"S
S	S94SS/\"S
SS94SS
/\"S
S
S94S/\"S
SS94S/\"S
S
S94/rSr	g
)�$TestEmptyAndSpaceContainingArgumentsi$r%r�r�r8z--yyyr�rTr$Nr�za badgerz	-a badgerz--yyy=a badgerz--yyy=-a badgerr#r�r#rrr�r�$s���	�C�s���D�'��$����v�H�
��r�B�$�� �
��r�J�$�/�0�
���[�D�1�2�
���R�$�"�%�&�
�
�	�R�$�*�5�6�
��	�b�4�;�7�8�
�	�R�$�*�5�6�
�	�b�4�;�7�8�	�Irr�c���\rSrSr\"SS9r\"SSSSS9\"S	S
\SS9\"S
SSS9/rSS/rS\	"SSSS94S\	"SSSS94S\	"SSSS94S\	"SSSS94S
\	"SSSS94S\	"SSSS94/r
Srg)� TestPrefixCharacterOnlyArgumentsi7z-+�rw�-r%r�ra)rUr�r2r�r�r0)rUr�r�z-+-r5r,r�r8z+ -r$NFr�z- Xrcz+ -3���Tz- ===z===r#)r&r'r(r)r�r�r�r�r
r�rr+r#rrr�r�7s�����-���C�c��H�5��C�c��R�0��E��L�1���
�e�}�H�	�R�$�"��
&�'�	�b�8�r�U�+�,�	��S�B�%�(�)�	��d�b�E�*�+�	��T�R�4�(�)�	�"�u��e�,�-�
�Irr�c��\rSrSrSr\"SSS9\"SSS9/r/rS\"S/S	94S\"//S	94S
\"S//S	94S\"S/S
/S	94S\"SS/S	94S\"/S/S	94S\"S
/S/S	94/r	Sr
g)�TestNargsZeroOrMoreiJr�r r�r�r�r$Nr�r&r!z	-x a -- br�r�r�r#r)r#rrr�r�Js���I��t�3�/��S��1D�E���H�	�R�$�"�
��	
�r�B�"�~��	��s�e�r�"�#�	�b�C�5�S�E�*�+�	�b�4�C�5�!�"�	��b�S�E�"�#�	�2���#��'�(��Irr�c
���\rSrSrSr\"S5\"SSS9\"S5/r/SQrS	\"S	/S
S94S\"S	/S
S94S\"S	SS/S
S94S\"S	/SQS
S94S\"S	/SQS
S94S\"S	/SQS
S94S\"S	SS/S
S94/r	Sr
g
)�TestNargsRemainderiZz2Tests specifying a positional with nargs=REMAINDERr%r��...r�r3)r$r3z-z ZrcNr�z-z Z X�Zz
-z Z X A B�Aroz
X -z Z A B)r3r�r�roz
X A -z Z B)r�r3r�ro�
X A B -z Z)r�ror3r�z	X Y --foo�Yr"r#r)r#rrr�r�Zs���<��s�8�S��E�%:�C��I�F��!�H�	�b�3�"��%�&�	�2��r�S�)�*�	�r�C�C��:��5�6�	�r�C�#8�D�A�B�	�r�C�#8�D�A�B�	�r�C�#8�D�A�B�	�b�3�3��.�D�9�:��Irr�c� �\rSrSrSr\"S\S9\"S\SS9\"SS	S
9/r/SQrS\	"S
S
/S94S\	"SS
/S94S\	"SS
S/S94S\	"S
S/S94S\	"S
S/S94S\	"S
S/S94S\	"S
SS/S94S\	"S
S
S/S94S\	"SS
S/S94S\	"SS
S/S94S\	"S
SS/S94/r
Srg
)�TestOptionLikeijz.Tests options that may or may not be argumentsr �r�z-3r�)r�rUr5r�r�)
r z-y2.5r'z-x -az-x -3z-x -3.5z-3 -3.5z-x -2.5z	-x -2.5 az-3 -.5za x -1z-x -1 az-3 -1 ar$Nr�z-x 2.5�@z-x 2.5 ar!z-3.5��?z-3-.5g�z-3 .5za -3.5za -x 1g�?z-x 1 az-3 1 ar#)r&r'r(r)r*r��floatr�r
r�rr+r#rrr�r�js��8�	�D�u���D�u�3�'��C�s����
0�H�

�R�$�$�"�
%�&�	�2��t�r�*�+�	�R�#��#��/�0�	��d�c�R�(�)�	�"�t�t�r�*�+�	�"�t�s�b�)�*�	�2����u�-�.�	�b�4�4�C�5�)�*�	�2��t��u�-�.�	�2��t��u�-�.�	�2����u�-�.��Irr�c�x�\rSrSrSr\"SS\\RS9\"SS\\RS9\"SS	\RS
9\"SS\\RS9\"SS\\RS9/r	/S
Qr
S\"54S\"SS94S\"SS/S94S\"SS94S\"SSS94S\"SS/SS94S\"SS94S\"SS94S\"/S94S\"SS/S94/
rS r
g)!�TestDefaultSuppressi�z%Test actions with suppressed defaultsr3r�rprqr�r�r,rz--qux�--quux)r r!z1 ar$rrr�r=rqr�ruTrz1 --baz�r3rrz	--baz 1 2�r3rqrrN)�quxz--qux 1)�quuxz
--quux 1 2r#)r&r'r(r)r*r�r�r6�SUPPRESSr�r
r�rr+r#rrr�r��s��/�	�E��3��0A�0A�B��E��3��0A�0A�B��G�L�(�2C�2C�D��G�3�S�(�2C�2C�D��H�C�c�8�3D�3D�E���"�H�	�R�T�
�	�b�Q�i��	��q�q�c�"�#�	�"��,��	�B�1�$�'�(�	�b�Q�Q�C�T�2�3�	�"��,��	�B�1�I��	�2�2�;��	�r��1�v��'��Irr�c���\rSrSrSr\"\RS9r\"SSS9\"SSS9\"S	S
S9/r	S/r
S
\"54S\"SS94S\"SS/S94S	\"SS94S\"SSS94S\"SS/SS94/rSr
g)�TestParserDefaultSuppressi�z4Test actions with a parser-level default of SUPPRESS��argument_defaultr3r�r�rqr�r�r,r-r r$r!r=r^r�ruTrrr�rr�r#N)r&r'r(r)r*r�r6r�r�r�r
r�rr+r#rrr�r��s���>��H�,=�,=�>���E����E����G�L�)���
�v�H�	�R�T�
�	�b�S�k��	��s���&�'�	�"��,��	�B�3�D�)�*�	�b�S�s�e��6�7�
�Irr�c
���\rSrSrSr\"SS9r\"SSSS9\"S	S
S9\"SS
S9\"SSS9/rS/rS\	"SSSSS94S\	"SSSSS94S\	"SS/SSS94S\	"SSSSS94S\	"SSSSS94S\	"SS/SSS94/r
Srg)�TestParserDefault42i�z.Test actions with a parser-level default of 42r0r��	--version�version�1.0�r.r�r3r�r�rqr�r�r,r-r r$)r3rqrrr�r!r^r�Trrr#Nr�r#rrr�r��s���8��B�/���K�	�5�9��E����E����G�L�)�	���v�H�	�R�B�B�B��
3�4�	�b�S�b�b�"�5�6�	��s���2�r�:�;�	�"����r�:�;�	�B�3�B�D�"�=�>�	�b�S�s�e��r�B�C�
�Irr�c
��^�\rSrSrSrU4Sjr\"SS9r\"S5\"S5\"SS	S
9/r/SQr	S\
R-rS
\
"SSS/S94S\
"SSSS/S94S\
"S\S/S94S\
"SS\/S94S\
"S\SS/S94S\
"SS\S/S94/SQ\
"SSS/S94/r\
R(aL\
RR!S5r\R&"\5r\S\
"S\S/S94S\
"SS\/S94/-
rS rU=r$SrS rU=r$)!�TestArgumentsFromFilei��"Test reading arguments from a filec� >�[[U]5 S[R"UR
5S-4SSSURS-4/nUH+up#[US5nURU5 SSS5 M- g!,(df   M?=f)N�hello�
)�	recursives-a
A
@hello)�invalids@no-such-path
�undecodable�wb)	rr�rXrb�fsencoder�r�r{r|�r�
file_textsrk�textrrs     �rrX�TestArgumentsFromFile.setUp�s����
�#�T�0�2�
�b�k�k�$�*�*�-��5�6�
%�
,�
�D�,�,�u�4�5�

�
�%�J�D��d�D�!�T��
�
�4� �"�!�%�!�!�s�A>�>
B
	�@��fromfile_prefix_charsr�r%r�r�r�)r$r�rcz@invalidz@missingzhello world!zX YNrcr�)r!r%r�z
X -a A Y Zr�r��@hello XzX @helloz-a B @recursive Y ZzX @recursive Z -a Bro)r�r$rcr�r$�@z@undecodable XzX @undecodablerr#)r&r'r(r)r*rXr�r�r�r
r�FS_NONASCIIr�r�r�TESTFN_UNDECODABLE�lstripr�rb�fsdecode�decoded_undecodabler+r,r-s@rr�r��sP���,�!���5���D�	��C���C�s����
7�H��Y�2�2�2�E�	��T�S�S�E�*�+�	�r�C�3�3��*�5�6�	�R�$�%�C�5�1�2�	�R�$�#�%��1�2�	��S�E�c�3�Z� @�A�	��S�C�E�3�<� @�A�	�r�B�#�#��7�8��I��#�#��2�2�9�9�$�?�� �k�k�+�6���
�r�D�,?�C�5�I�J�
�r�D�C�4G�3H�I�J�
�	
�	�
�rr�c�|^�\rSrSrSrU4Sjr"SS\5r\r\	"SS9r
\	"SS	S
9/r/rS\
"/SQS
94/rSrU=r$)�TestArgumentsFromFileConverteri�r�c�>�[[U]5 S/nUH+up#[US5nUR	U5 SSS5 M- g!,(df   M?=f)N)r�s
hello world!
r)rrrXr{r|rs     �rrX�$TestArgumentsFromFileConverter.setUp�sP���
�,�d�9�;�(�
�
�%�J�D��d�D�!�T��
�
�4� �"�!�%�!�!�s�A	�	
A	c��\rSrSrSrSrg)�>TestArgumentsFromFileConverter.FromFileConverterArgumentParseric#�p# �UR5HnUR5(dMUv� M  g7fr^)r�strip)r�arg_line�args   r�convert_arg_line_to_args�WTestArgumentsFromFileConverter.FromFileConverterArgumentParser.convert_arg_line_to_argss)����~�~�'���y�y�{�{���	�(�s�46r#N)r&r'r(r)rr+r#rr�FromFileConverterArgumentParserrs��	rrrrr�r�r�r	)r�zworld!rcr�r#)r&r'r(r)r*rXr�rr�r�r�r�r
r�rr+r,r-s@rrr�sX���,�!��*D��3�L���5���C�s�����H�	�R�2�3�4��Irrc�2�\rSrSrSrSrSrSrSrSr	g)	�TestFileTypeRepric�f�[R"S5nURS[U55 g)Nr7z
FileType('r')�r6�FileTyper�repr�rr�s  r�test_r�TestFileTypeRepr.test_rs&��� � ��%������$�t�*�5rc�h�[R"SS5nURS[U55 g)Nrr�zFileType('wb', 1)r r#s  r�	test_wb_1�TestFileTypeRepr.test_wb_1s)��� � ��q�)�����,�d�4�j�9rc�d�[R"SSS9nURS[U55 g)Nr7�latin_1ryz!FileType('r', encoding='latin_1')r r#s  r�test_r_latin�TestFileTypeRepr.test_r_latin s)��� � ��y�9�����<�d�4�j�Irc�f�[R"SSSS9nURS[U55 g)Nrx�big5�ignore)rz�errorsz/FileType('w', encoding='big5', errors='ignore')r r#s  r�test_w_big5_ignore�#TestFileTypeRepr.test_w_big5_ignore$s.��� � ��v�h�G�����J��d��	%rc�f�[R"SSSS9nURS[U55 g)Nr7r��replace�r0z"FileType('r', 1, errors='replace')r r#s  r�test_r_1_replace�!TestFileTypeRepr.test_r_1_replace)s+��� � ��a�	�:�����=�t�D�z�Jrr#N)
r&r'r(r)r$r'r+r1r6r+r#rrrrs��6�:�J�%�
Krrc� �\rSrSrSrSrSrg)�StdStreamCompareri2c��[R"U5UlUS:Xa[UlgUS:Xa[
Ulg[
5Ulg)N�
stdout.buffer�
stderr.buffer)�operator�
attrgetterr�r��
backupattrr�r)rr�s  rr�StdStreamComparer.__init__3s=�� �*�*�4�0����?�"�1�D�O�
�_�
$�1�D�O�$�h�D�Orc�n�XR[5:H$![a XR:Hs$f=fr^)r�r��AttributeErrorr?r�s  rr��StdStreamComparer.__eq__As5��	,��L�L��-�-�-���	,��O�O�+�+�	,�s��4�4)r?r�N�r&r'r(r)rr�r+r#rrr9r92s��'�,rr9�stdinr�r�zstdin.bufferr;r<c�$�\rSrSr0rSrSrSrg)�RFileiPc��Xlgr^�rt�rrts  rr�RFile.__init__S����	rc�:�XR;aURUnO.UR5=o RU'UR5 [U[5(dURS5nURURs=:H=(a U:H$s $)N�ascii)�seen�read�closer�rr rt�rr�rs   rr��RFile.__eq__Vsv���I�I���9�9�U�#�D�&+�j�j�l�2�D�9�9�U�#��K�K�M��$��$�$��;�;�w�'�D��y�y�E�J�J�.�.�$�.�.�.�.rrIN)r&r'r(r)rOrr�r+r#rrrGrGPs��
�D��/rrGc�*^�\rSrSrSrU4Sjr\"S\R"5S9\"S\R"S5S9/r	/SQr
S	\"S
\"S	5S94S\"\"S	5\"S
5S94S\"\"S	5\"S
5S94S\"\
\
S94S\"S
\"S5S94/rSrU=r$)�
TestFileTypeRia�8Test the FileType option/argument type for reading filesc�>�[[U]5 SHPn[[R
R
URU5SSS9nURU5 SSS5 MR URS5 g!,(df   Mu=f)Nrurxr
ry�readonly)
rrUrXr{rbrkrlrar|r��r�	file_namerrs   �rrX�TestFileTypeR.setUpdsp���
�m�T�(�*�'�I��b�g�g�l�l�4�=�=�)�<��G�-�04��
�
�9�%�-�-�(�	
�!�!�*�-�-�-�s�A<�<
B	r r�r�r7)r r$znon-existent-file.txtr3N�r%r��
-x foo barrq�
bar -x foo�-x - -rXr#)r&r'r(r)r*rXr�r6r!r�r
r�rG�eq_stdinrr+r,r-s@rrUrUas����B�.�	�D�x�(�(�*�+��F��*�*�3�/�0���3�H�	��T��e��-�.�	�r�E�%�L�u�U�|�<�=�	�r�E�%�L�u�U�|�<�=�	�2��x�0�1�	�R�$�U�:�%6�7�8��IrrUc�^�\rSrSrSrU4Sjr\"S\R"S5SS9/r	S/r
S	\"\"S
5S94/r
SrU=r$)
�TestFileTypeDefaultsiyz<Test that a file is not created unless the default is neededc��>�[[U]5 [[R
R
URS5SSS9nURS5 UR5 g)N�goodrxr
ry)
rrbrXr{rbrkrlrar|rQ)rrrs  �rrX�TestFileTypeDefaults.setUp{sG���
�"�D�/�1��B�G�G�L�L�����7��w�O���
�
�6���
�
�rr�r7zno-file.txt�r�r�r$z-c goodrd)r�r#)r&r'r(r)r*rXr�r6r!r�r
r�rGrr+r,r-s@rrbrbysK���F��	�D�x�(�(��-�}�E����t�H��R�%��-�0�1�2�Irrbc	�^�\rSrSrSrU4Sjr\"S\R"S5S9\"S\R"S5S9/r	SS/r
S	\"S
\"S	5S94S\"\"S	5\"S
5S94S\"\"S	5\"S
5S94S\"\
\
S94/rSrU=r$)�TestFileTypeRBi�rVc�>�[[U]5 SHPn[[R
R
URU5SSS9nURU5 SSS5 MR g!,(df   Md=f)Nrurxr
ry)	rrhrXr{rbrkrlrar|rYs   �rrX�TestFileTypeRB.setUp�s`���
�n�d�)�+�'�I��b�g�g�l�l�4�=�=�)�<��G�-�04��
�
�9�%�-�-�(�-�-�s�A+�+
A:	r �rbr�r�r$r3Nr\r]rqr^r_r#)r&r'r(r)r*rXr�r6r!r�r
r�rG�	eq_bstdinrr+r,r-s@rrhrh�s����B�&�	�D�x�(�(��.�/��F��*�*�4�0�1����b�z�H�	��T��e��-�.�	�r�E�%�L�u�U�|�<�=�	�r�E�%�L�u�U�|�<�=�	�2�	�	�2�3�	�Irrhc�.�\rSrSr\"5rSrSrSrg)�WFilei�c��Xlgr^rIrJs  rr�WFile.__init__�rLrc��XR;a_SnSUR;aURS5nURU5 UR	5 URRU5 URUR:H$)NzCheck that file is writable.r�rN)rO�moderr|rQ�addrtrRs   rr��WFile.__eq__�sc���	�	�!�1�D��e�j�j� ��{�{�7�+���K�K����K�K�M��I�I�M�M�%� ��y�y�E�J�J�&�&rrIN)	r&r'r(r)r�rOrr�r+r#rrrnrn�s���5�D��'rrnc
�,^�\rSrSrSrU4Sjr\"S\R"S5S9\"S\R"S5S9/r	/SQr
S	\"S
\"S	5S94S\"S
\"S5S94S
\"\"S	5\"S5S94S\"\"S	5\"S5S94S\"\
\
S94/rSrU=r$)�
TestFileTypeWi�z8Test the FileType option/argument type for writing filesc�f>�[TU]5 URS5 URS5 g�NrX�writable�rrXr�r��rrs �rrX�TestFileTypeW.setUp��(���
��
���!�!�*�-��!�!�*�-rr rxr�r�)r r$rXr3Nr\ryr]rqr^r_r#�r&r'r(r)r*rXr�r6r!r�r
r�rn�	eq_stdoutrr+r,r-s@rrvrv�s����B�.�	�D�x�(�(��-�.��F��*�*�3�/�0���&�H�	��T��e��-�.�	�R�$�U�:�%6�7�8�	�r�E�%�L�u�U�|�<�=�	�r�E�%�L�u�U�|�<�=�	�2�	�	�2�3��Irrvc��^�\rSrSrSrU4Sjr\"S\R"S5S9\"S\R"S5S9/r	/SQr
S	\"\"S
5\"S5S94S
\"\
\
S94/rSrU=r$)�
TestFileTypeXi�zATest the FileType option/argument type for writing new files onlyc�f>�[TU]5 URS5 URS5 grxrzr{s �rrX�TestFileTypeX.setUp�r}rr r%r�r�)r r$rXryr]r3rqr\r_r#r~r-s@rr�r��ss���K�.�	�D�x�(�(��-�.��F��*�*�3�/�0���2�H�	�r�E�%�L�u�U�|�<�=�	�2�	�	�2�3��Irr�c	��\rSrSrSr\"S\R"S5S9\"S\R"S5S9/rSS/r	S\
"S	\"S5S
94S\
"\"S5\"S5S
94S
\
"\"S5\"S5S
94S\
"\\S
94/r
Srg	)�TestFileTypeWBi�z?Test the FileType option/argument type for writing binary filesr rr�r�r$r3Nr\r]rqr^r_r#)r&r'r(r)r*r�r6r!r�r
r�rn�
eq_bstdoutrr+r#rrr�r��s���I�	�D�x�(�(��.�/��F��*�*�4�0�1����b�z�H�	��T��e��-�.�	�r�E�%�L�u�U�|�<�=�	�r�E�%�L�u�U�|�<�=�	�2�
��4�5�	�Irr�c��\rSrSrSr\"S\R"S5S9\"S\R"S5S9/rS\	"\
"S5\
"S	5S
94S\	"\\S
94/rSr
g
)�TestFileTypeXBi�zHTest the FileType option/argument type for writing new binary files onlyr �xbr�r�r]r3rqr\r_r#N)r&r'r(r)r*r�r6r!r�r�rnr�rr+r#rrr�r��sh��N�	�D�x�(�(��.�/��F��*�*�4�0�1���

�r�E�%�L�u�U�|�<�=�	�2�
��4�5��Irr�c�$�\rSrSrSrSrSrSrg)�TestFileTypeOpenArgsi�z0Test that open (the builtin) is correctly calledc
�2�[RnU"S5S4U"SS5S4U"SSS9S4U"S	S
S9S4U"SS
SS5S4/n[R"S5nUH upEU"S5 UR"S/UQ76 M" SSS5 g!,(df   g=f)Nrk)rk���NNrxr�)rxr�NNr4r5)rxr�Nr4rr.ry)rr�r.Nr�l1�strict)rxrr�r�z
builtins.openr3)r6r!rr:�assert_called_with)r�FT�cases�mr�r�s      r�test_open_args�#TestFileTypeOpenArgs.test_open_args�s���
�
�
��
��X�-�.�
��Q�Z�-�.�
��I�
&�(B�C�
��v�
&�(@�A�
��Q��h�
'�)A�B�
���Z�Z��
(�A�#�
���U���$�$�U�2�T�2�$�)�
(�
(�s�'B�
Bc��UR[5 [R"S5"S5 SSS5 g!,(df   g=f)Nr�z-test)r�
ValueErrorr6r!r!s r�test_invalid_file_type�+TestFileTypeOpenArgs.test_invalid_file_type
s/��
�
�
�z�
*����c�"�7�+�+�
*�
*�s	�<�
A
r#N)r&r'r(r)r*r�r�r+r#rrr�r��s��:�3�,rr�c��\rSrSrSrSrSrg)�!TestFileTypeMissingInitializationizl
Test that add_argument throws an error if FileType class
object was passed instead of instance of FileType
c�6�[R"5nUR[5nUR	S[R
S9 SSS5 UR
[R
<S3[WR55 g!,(df   NF=f)Nr r�z: is a FileType class object, instance of it must be passed)	r6r7rr�r�r!rrr�r�s   r�test�&TestFileTypeMissingInitialization.testsq���(�(�*��
�
�
�z�
*�b�����8�+<�+<��=�+�	
���� � �
#������	
�+�
*�s�B
�

Br#N�r&r'r(r)r*r�r+r#rrr�r�s���
	
rr�c�p�\rSrSrSr\"S\S9\"S\S9/r/SQr	S\
"SS	S
94S\
"SS
S
94S\
"SSS
94/rSrg)�TestTypeCallablei$z,Test some callables as option/argument types�--eggsr�r�)r!�42jz--eggs az	--eggs 2iz--eggs=42 42r0gE@)�eggsr�z--eggs 2j -- -1.5y@���z1024.675Ng3333��@r#)
r&r'r(r)r*r��complexr�r�r
r�rr+r#rrr�r�$s^��6�	�H�7�#��F�����5�H�	���$�/�0�	�b�b�t�4�5�	�R�T��1�2��Irr�c��\rSrSrSr"SS\5r\"S\S9\"S\S9/r/r	S\
"\"S	5\"S
5S94S\
"\"S
5\"S5S94/rSrg)�TestTypeUserDefinedi3z(Test a user-defined option/argument typec� �\rSrSrSrSrSrg)�TestTypeUserDefined.MyTypei6c��Xlgr^��value�rr�s  rr�#TestTypeUserDefined.MyType.__init__8����Jrc�`�[U5UR4[U5UR4:H$r^�r�r�r�s  rr��!TestTypeUserDefined.MyType.__eq__;�'����J��
�
�+��U��U�[�[�/I�I�Irr�NrDr#rr�MyTyper�6�
��	�	Jrr�r r�r�r�r�r!r\�-xf grFr�r#N)
r&r'r(r)r*rOr�r�r�r
r�rr+r#rrr�r�3sm��2�J��J�	�D�v���F�� ����H�	�2��s��&��+�6�7�	�"�v�c�{����5�6��Irr�c��\rSrSrSr"SS5r\"S\S9\"S\S9/r/rS\	"\"S	5\"S
5S94S\	"\"S
5\"S5S94/r
Srg)�TestTypeClassicClassiIzTest a classic class typec� �\rSrSrSrSrSrg)�TestTypeClassicClass.CiLc��Xlgr^r�r�s  rr�TestTypeClassicClass.C.__init__Nr�rc�`�[U5UR4[U5UR4:H$r^r�r�s  rr��TestTypeClassicClass.C.__eq__Qr�rr�NrDr#rr�Cr�Lr�rr�r r�r�r�r�r!r\r�rFr�r#N)r&r'r(r)r*r�r�r�r
r�rr+r#rrr�r�Isk��#�J�J�	�D�q���F������H�	�2��#��Q�s�V�,�-�	�"�q��v�A�c�F�+�,��Irr�c��\rSrSrSrSrSrg)�TestTypeRegistrationi_z*Test a user-defined type by registering itc�v�Sn[R"5nURSSU5 URSSS9 URSSS9 UR	URSR
55[SSS	95 UR	URS
R
55[SSS	95 g)Nc��SU-$)Nzmy_type{%s}r#��strings r�get_my_type�.TestTypeRegistration.test.<locals>.get_my_typeds
�� �6�)�)rr��my_typer r�r�rrz
my_type{1}r�z-x 1 42zmy_type{42})r6r7�registerr�rrGrr�)rr�r=s   rr��TestTypeRegistration.testbs���	*��(�(�*������	�;�7����D�y��1����C�i��0�����*�*�3�9�9�;�7��d�l�3�	5�����*�*�9�?�?�+<�=��l�m�<�	>rr#Nr�r#rrr�r�_s
��4�
>rr�c	���\rSrSrSr"SS\R5r"SS\R5r\	"SS\\
S	S
9\	"S\\SS
S9/r/r
S\"SS
S94S\"S	SS94S\"SSS94S\"SSS94/rSrg)�TestActionUserDefinedivz*Test a user-defined option/argument actionc��\rSrSrSSjrSrg)�$TestActionUserDefined.OptionalActioniyNc���[SS9nUS;aSUlOUS;aSUlO[SU-5e[	US	U5 g![an[SU-5eSnAff=f)
N��?r�)��?r�r�)�@r��	value: %szopt_action failed: %sr�)r�ra�AssertionErrorr�r��rr=�	namespacer��
option_stringrr�s       r�__call__�-TestActionUserDefined.OptionalAction.__call__{su��
G�!�d�m���N�*�)*�K�&��e�^�)+�K�&�(��u�)<�=�=�

�I�v�u�-��"�
G�)�*A�A�*E�F�F��
G�s!�A�
A�A�
A �
A�A r#r^�r&r'r(r)r�r+r#rr�OptionalActionr�ys��	.rr�c��\rSrSrSSjrSrg)�&TestActionUserDefined.PositionalActioni�Nc���[SS9nUS;aSUlO*US;aSUlOUS;aSUlO[S	U-5e[	USU5 g![an[S
U-5eSnAff=f)Nr��ra)r0r�r�)r�r�)r�r�r�zarg_action failed: %sra)r�r�r�r�r�r�s       rr��/TestActionUserDefined.PositionalAction.__call__�s���
G�!��l���H�$�'+�K�$��c�\�',�K�$��c�\�',�K�$�(��u�)<�=�=�

�I�x��/��"�
G�)�*A�A�*E�F�F��
G�s&�A�
A�
A�A�
A.�A)�)A.r#r^r�r#rr�PositionalActionr��s��	0rr�z-sr�r�)rUr.r�r�rar�r�)r.r�r�r�z-s0.125r�)r�rar�r0z
-s 0.625 1r�r�z84 -s2r�r�r#N)r&r'r(r)r*r6�Actionr�r�r�r�r�r�r
r�rr+r#rrr�r�vs���4�.����.�,0�8�?�?�0�4	�D�v�n���	&��H�-��C��	,����H�	�B�E�!�,�-�	
�r�t�B�'�(�	�r�u�Q�/�0�	�2�3�r�*�+�	�Irr�c�H�\rSrSrSr"SS\R5rSrSr	g)�TestActionRegistrationi�z5Test a user-defined action supplied by registering itc��\rSrSrSSjrSrg)�TestActionRegistration.MyActioni�Nc�6�[X RSU-5 g)Nzfoo[%s])r�rU)rr=r��valuesr�s     rr��(TestActionRegistration.MyAction.__call__�s���I�y�y�)�f�*<�=rr#r^r�r#rr�MyActionr��s��	>rr�c�,�[R"5nURSSUR5 UR	SSS9 URUR
S/5[SS95 URUR
S/5[S	S95 g)
Nr.�	my_actionrar-rrzfoo[1]r�r�zfoo[42])r6r7r�r�r�rrGr�r<s  rr��TestActionRegistration.test�s{���(�(�*������+�t�}�}�=����H�[��9�����*�*�C�5�1�2�X�3F�G�����*�*�D�6�2�B�i�4H�Irr#N)
r&r'r(r)r*r6r�r�r�r+r#rrr�r��s��?�>�8�?�?�>�
Jrr�c�B�\rSrSr\"SSS\S9/rSrS\"/SQS	94/r	Sr
g
)�TestActionExtendi�r"r�r�)r.r�r�r#z--foo f1 --foo f2 f3 f4)�f1�f2�f3�f4r=N)r&r'r(r)r�rr�r
r�rr+r#rrr�r��s4���G�H�C�c�:����H�	"�B�+C�$D�E��Irr�c�N�\rSrSrSr"SS\R5rSrSr	Sr
g)	�TestInvalidActioni�z Test invalid user defined Actionc��\rSrSrSrg)�#TestInvalidAction.ActionWithoutCalli�r#N�r&r'r(r)r+r#rr�ActionWithoutCallr��s��rr�c��[R"5nURSURS9 UR	[
URSS/5 g)Nr"r-rq)r6r7r�r�r�NotImplementedErrorrGr<s  r�test_invalid_type�#TestInvalidAction.test_invalid_type�sG���(�(�*�����G�D�,B�,B��C����-�v�/@�/@�7�E�BR�Src��[5nURS5nSUlUR[UR
SS/5 g)Nr"r�rq)r�r�r�rr�rG�rr=r.s   r�test_modified_invalid_action�.TestInvalidAction.test_modified_invalid_action�s?��+�-���$�$�W�-��������-�v�/@�/@�7�E�BR�Srr#N)r&r'r(r)r*r6r�r�r�rr+r#rrr�r��s!��*�
�H�O�O�
�T�Trr�c��^�\rSrSrSrSrS"SjrU4SjrSrSr	Sr
S	rS
rSr
SrS
rSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSr Sr!S r"S!r#U=r$$)#�TestAddSubparsersi�zTest the add_subparsers methodc�8�UR"[/UQ70UD6 gr^�rr�r�s   r�assertArgumentParserError�+TestAddSubparsers.assertArgumentParserError�������-�?��?��?rc�d�U(a&[SSUS9nURUSS-S-SSS	9 O[SSS
9nURSSSS	9 URS[S
S9 SS0nU(aSUS'SUS'OSUS'UR"S50UD6nUR	[
RSUR5 [SS9nU(aSUS'U(aSS/US'UR"S60UD6nURS[SS9 URS /S!QS"S#9 [S$S9n	U(aS%U	S'UR"S70U	D6n
U
RS&/S'QS(S#9 U
RS)[S*S+S,9 [S-S9nU(aS.US'UR"S80UD6nURS/[S0S9 URS1S2S3S49 U$)9N�PROG�main description)�prog�descriptionrwrr�r3r,�foo help�r.rN�r
rr"rq�bar help�r�rNr�F�COMMANDr��commands�title�command helprNz(cannot have multiple subparser argumentsz
1 description�rz1 help�1alias1�1alias2�aliasesr��w helpr%r��x helprMz
2 descriptionz2 helpr8�rrr�r.�y helpr5r��z help)r�r�rNz
3 descriptionz3 help�tzt help�ur�zu help�r�rNr#�rr)r�)r.)r�r�r��add_subparsersrWr6rX�dict�
add_parserr�r�)
r�subparser_helprwrr=�subparsers_kwargs�
subparsers�parser1_kwargs�parser1�parser2_kwargs�parser2�parser3_kwargs�parser3s
             rr�TestAddSubparsers._get_parser�s
���/��);�,�X�F�����Q��!�#�e�+�L�z�
 �
S�0��);�=�F������:�
 �
?������J�	�	0�(��/���+4��i�(�)3��g�&�(6��f�%��*�*�?�->�?�
����x�5�5�I�%�4�4�	6�
�/�:���%-�N�6�"��)2�I�(>�N�9�%��'�'�>�~�>�����T��(��;����S�/���I��/�:���%-�N�6�"��'�'�>�~�>�����T�?���J����S�w�c���I��/�:���%-�N�6�"��'�'�>�~�>�����S�s���:����S��H��=��
rc�t>�[TU]5 UR5UlURSS9Ulg)NT)r()rrXrr=�command_help_parserr{s �rrX�TestAddSubparsers.setUp*	s2���
��
���&�&�(���#'�#3�#3�4�#3�#H�� rc��SH9nUR5nURURRU5 M; g)N)r$r!za az0.5 az0.5 1z0.5 1 -yz0.5 2 -w)rrr=rG)rr
r�s   r�test_parse_args_failures�*TestAddSubparsers.test_parse_args_failures/	s4��1�H��>�>�#�D��*�*�4�;�;�+A�+A�4�H�1rc
�$�URURRSR55[	SSSSS95 URURRSR55[	SS	S
SS/S
95 URURRSR55[	SSSSS95 URURRSR55[	SSS/SQS95 g)N�0.5 1 b -w 7Fr��r��r3rqrxr%z0.25 --foo 2 -y 2 3j -- -1jTr�r�y@y��)r3rqr�r5z--foo 0.125 1 cr�r�z-1.5 3 11 -- a --foo 7 -- br��)r!r"r!�--r�)r3rqr!r")rr=rGrr�r!s r�test_parse_args�!TestAddSubparsers.test_parse_args6	s�������K�K�"�"�>�#7�#7�#9�:��5�c�Q�#�.�	
�	
����K�K�"�"�#@�#F�#F�#H�I��4�T�S�R��I�6�	
�	
����K�K�"�"�#4�#:�#:�#<�=��4�U�d�c�2�	
�	
����K�K�"�"�#@�#F�#F�#H�I��5�d�b�,J�K�	
rc
���URURRSR55[	SSSSS9/45 URURRSR55[	SSSSS9S/45 URURRS	R55[	SSSSS9S/45 URURRS
R55[	SSSSS9SS/45 URURRS
R55[	SSSSS9/SQ45 g)Nr9Fr�r:r�r;z0.5 -p 1 b -w 7�-p�0.5 1 b -w 7 -pz0.5 1 b -q -rs -w 7�-qz-rsz0.5 -W 1 b -X Y -w 7 Z)z-Wz-Xr�r�)rr=�parse_known_argsrr�r!s r�test_parse_known_args�'TestAddSubparsers.test_parse_known_argsI	sC������K�K�(�(��)=�)=�)?�@�
�E�s�a�3�
/��4�	
�	
����K�K�(�(�):�)@�)@�)B�C�
�E�s�a�3�
/�$��8�	
�	
����K�K�(�(�):�)@�)@�)B�C�
�E�s�a�3�
/�$��8�	
�	
����K�K�(�(�)>�)D�)D�)F�G�
�E�s�a�3�
/�$���?�	
�	
����K�K�(�(�)A�)G�)G�)I�J�
�E�s�a�3�
/�1G�H�	
rc�n�"SS5nURURRSR5US9US/45 UR	UR
S5 URURS5 URURS5 URURS	5 g)
Nc��\rSrSrSrg)�ETestAddSubparsers.test_parse_known_args_to_class_namespace.<locals>.Ci`	r#Nr�r#rrr�rI`	���rr�rB)r�rAFr�r:r�)	rr=rDr�assertIsr3rqrxr%)rr�s  r�(test_parse_known_args_to_class_namespace�:TestAddSubparsers.test_parse_known_args_to_class_namespace_	s���	�	�����K�K�(�(�):�)@�)@�)B�a�(�P�
���K�	
�	
�
�
�a�e�e�U�#��������$�������a� �������c�"rc
��[5nURS5 URS5 UR5nURS5nURS5 URS5 UR	UR/SQ5[
SSSSS95 UR	UR/S	Q5[
SSSSS95 URUR
/S
Q5 UR	UR/SQ5[
SSSSS95 UR	UR/SQ5[
SSSSS95 UR	UR/S
Q5[
SSSSS95 URUR
/SQ5 g)Nr'r(rq�--foz--foonew)r*rrrqrr)r,r-�fo�foonew)�--foonrrrq)rOrrrq)rqrOrr)rqr"rr)rqrRrr)rqr*rr)r�r�r%r'rrGr�r�rr=r*r,s    r�test_abbreviation�#TestAddSubparsers.test_abbreviationk	se��+�-�����J�'����J�'��*�*�,�
��'�'��.�����V�$����Z�(�����*�*�+C�D��5��$�t�L�	N�����*�*�+C�D��4��$�t�L�	N��&�&�v�'8�'8�:P�Q�����*�*�+A�B��4���t�L�	N�����*�*�+B�C��4���e�L�	N�����*�*�+C�D��4���e�L�	N��&�&�v�'8�'8�:R�Src��[5nURSSSSS9 URSSSSS9 URURSS/5[	S	SS
9S/45 URURSS/5[	S	SS
9S/45 URURS/5[	S	SS
9S/45 URURS/5 URURS
/5[	SSS
9S
/45 URURS/5[	SSS
9S/45 URURS/5[	S	SS
9S/45 URURS/5 URURS/5[	S	SS
9S/45 URURS/5[	S	S	S
9S/45 URURS/5 URURS/5 URURS/5 URURS/5[	S	S	S
9S/45 g)Nz-kz--knownrrrr�z--newz-ur�)�known�newz-kuz-k=uz-ukz-u=kz	-kunknownz-unknownz
-k=unknownz
-ku=nknownz	-u=nknownz-knewz-ewz-kn=ewz-k-newz-kn-ewz-kne-wz-e-w)r�r�rrDr�rr<s  r�-test_parse_known_args_with_single_dash_option�?TestAddSubparsers.test_parse_known_args_with_single_dash_option�	sR��+�-�����D�)�G�Q��G����D�'�'�1��E�����0�0�$���>��1�!�,�t�f�5�	7�����0�0�$���>��1�!�,�t�f�5�	7�����0�0�%��9��1�!�,�t�f�5�	7��&�&�v�'>�'>���I�����0�0�%��9��1�!�,�u�g�6�	8�����0�0�&��:��1�!�,�v�h�7�	9�����0�0�+��?��1�!�,�z�l�;�	=��&�&�v�'>�'>���O�����0�0�,��@��1�!�,�{�m�<�	>�����0�0�'��;��1�!�,�u�g�6�	8��&�&�v�'>�'>��
�K��&�&�v�'>�'>��
�K��&�&�v�'>�'>��
�K�����0�0�(��<��1�!�,�v�h�7�	9rc�
�[5nURSSS9 URSS9nURS5nURS5 UR	[SSS	S
9UR
SR555 g)Nr"r,r-rqrTrrrrFr�r�rq)r�r�r%r'rr�rGrrSs    r�	test_dest�TestAddSubparsers.test_dest�	s{��+�-�����G�L��9��*�*��*�6�
��'�'��,�����U�#������3�C�8��*�*�5�;�;�=�9�	;rc��URS/5nURURS5 URURS5 g)N�runr#)rGr�commandr)rr=�rets   r�_test_required_subparsers�+TestAddSubparsers._test_required_subparsers�	s@�������(��������e�,�	
�&�&�v�'8�'8�"�=rc��[5nURSS9nSUlURS5 UR	U5 g)Nr`rTTr_)r�r%r�r'rb�rr=r*s   r�&test_required_subparsers_via_attribute�8TestAddSubparsers.test_required_subparsers_via_attribute�	sA��+�-���*�*�	�*�:�
�"�
�����e�$��&�&�v�.rc�|�[5nURSSS9nURS5 URU5 g)Nr`T�rUr�r_)r�r%r'rbres   r�"test_required_subparsers_via_kwarg�4TestAddSubparsers.test_required_subparsers_via_kwarg�	s;��+�-���*�*�	�D�*�I�
����e�$��&�&�v�.rc��[5nURSS9nURS5 URS5nUR	UR
5 g)Nr`rTr_r#�r�r%r'rG�assertIsNoner`�rr=r*ras    r� test_required_subparsers_default�2TestAddSubparsers.test_required_subparsers_default�	sM��+�-���*�*�	�*�:�
����e�$�����#�����#�+�+�&rc�F�[5nURSS9nURS5 URS5 UR[5nURS5 SSS5 UR
WRRS5 g!,(df   N5=f)NT�r�r3rqr#z8error: the following arguments are required: {foo,bar}
$�	r�r%r'rr�rGrJr�r��rr=r*�excinfos    r�-test_required_subparsers_no_destination_error�?TestAddSubparsers.test_required_subparsers_no_destination_error�	s���+�-���*�*�D�*�9�
����e�$����e�$�
�
�
�2�
3�w����b�!�4�������$�$�G�	
�4�
3���B�
B c�F�[5nURSS9nURS5 URS5 UR[5nURS5 SSS5 UR
WRRS5 g!,(df   N5=f)NTrsr3rqrzLerror: argument {foo,bar}: invalid choice: 'baz' \(choose from foo, bar\)\n$rtrus    r�3test_wrong_argument_subparsers_no_destination_error�ETestAddSubparsers.test_wrong_argument_subparsers_no_destination_error�	s���+�-���*�*�D�*�9�
����e�$����e�$�
�
�
�2�
3�w����h�'�4�������$�$�[�	
�4�
3�ryc��[5nURSSS9nURS5 URS5nUR	UR
5 g)Nr`Frir_r#rmros    r�test_optional_subparsers�*TestAddSubparsers.test_optional_subparsers�	sO��+�-���*�*�	�E�*�J�
����e�$�����#�����#�+�+�&rc���URURR5S5 URURR5[R
"S55 g)N�)usage: PROG [-h] [--foo] bar {1,2,3} ...
a?            usage: PROG [-h] [--foo] bar {1,2,3} ...

            main description

            positional arguments:
              bar         bar help
              {1,2,3}     command help

            options:
              -h, --help  show this help message and exit
              --foo       foo help
            )rr=rOrP�textwrap�dedentr!s r�	test_help�TestAddSubparsers.test_help�	sQ��������1�1�3�E�	G�������0�0�2�H�O�O�E�5�	rc���URSS9nURUR5S5 URUR5[R
"S55 g)Nz+:-r�z)usage: PROG [-h] [++foo] bar {1,2,3} ...
a?            usage: PROG [-h] [++foo] bar {1,2,3} ...

            main description

            positional arguments:
              bar         bar help
              {1,2,3}     command help

            options:
              -h, --help  show this help message and exit
              ++foo       foo help
            �rrrOrPr�r�r<s  r�test_help_extra_prefix_chars�.TestAddSubparsers.test_help_extra_prefix_chars�	s\���!�!�u�!�5������,�,�.�E�	G�����+�+�-�x���@�0�	rc��[SSS9nURSSSS9 URUR5[R
"S55 g)	Nrrrz--non-breakingr�uRhelp message containing non-breaking spaces shall not wrap at non-breaking spacesru7            usage: PROG [-h] [--non-breaking]

            main description

            options:
              -h, --help      show this help message and exit
              --non-breaking  help message containing non-breaking spaces shall not
                              wrap at non-breaking spaces
        �r�r�rrPr�r�r<s  r�test_help_non_breaking_spaces�/TestAddSubparsers.test_help_non_breaking_spaces
s[��+��%7�9������]�;�	�	<�	
����+�+�-�x���	@�	0
�		rc�>�[SSS9nURSSS9 URUR5[R
"S55 [SSS9nURS/SS	9 URUR5[R
"S
55 g)Nrrrr3z    �rNz�            usage: PROG [-h] foo

            main description

            positional arguments:
              foo         

            options:
              -h, --help  show this help message and exit
        z%(choices)srMz�            usage: PROG [-h] {}

            main description

            positional arguments:
              {}          

            options:
              -h, --help  show this help message and exit
        r�r<s  r�test_help_blank�!TestAddSubparsers.test_help_blank
s���+��%7�9�������	�	�	
����+�+�-�x���	@�	0
�		�,��%7�9������2��	�	 �	
����+�+�-�x���	@�	0
�		rc���URSS9nURUR5S5 URUR5[R
"S55 g)Nrur�z)usage: PROG [+h] [++foo] bar {1,2,3} ...
a?            usage: PROG [+h] [++foo] bar {1,2,3} ...

            main description

            positional arguments:
              bar         bar help
              {1,2,3}     command help

            options:
              +h, ++help  show this help message and exit
              ++foo       foo help
            r�r<s  r� test_help_alternate_prefix_chars�2TestAddSubparsers.test_help_alternate_prefix_chars;
s\���!�!�u�!�5������,�,�.�E�	G�����+�+�-�x���@�0�	rc���URURR5S5 URURR5[R
"S55 g)Nr�a�            usage: PROG [-h] [--foo] bar {1,2,3} ...

            main description

            positional arguments:
              bar         bar help
              {1,2,3}     command help
                1         1 help
                2         2 help
                3         3 help

            options:
              -h, --help  show this help message and exit
              --foo       foo help
            )rr3rOrPr�r�r!s r�test_parser_command_help�*TestAddSubparsers.test_parser_command_helpM
sU������1�1�>�>�@�E�	G�����1�1�=�=�?�!���*��	rc�h�[SSS9nURSSSS9 URSS	S
9 URSSS
S9nURS5nURS5nUR	UR5S5 UR	UR
5[R"S55 g)Nrrrr"r,rrrqrr��subcommandsrzadditional text)rrrNrrr�z'usage: PROG [-h] [--foo] bar {1,2} ...
av            usage: PROG [-h] [--foo] bar {1,2} ...

            main description

            positional arguments:
              bar         bar help

            options:
              -h, --help  show this help message and exit
              --foo       foo help

            subcommands:
              command help

              {1,2}       additional text
            )	r�r�r%r'rrOrPr�r�)rr=r*r,r.s     r�test_subparser_title_help�+TestAddSubparsers.test_subparser_title_helpb
s���+��8J�L�����G�L�z��J����E�
��3��*�*��7E�0A�+�C�
��'�'��,���'�'��,������,�,�.�C�	E�����+�+�-�x���@�0�	rc��UR[5nURRUR	55 SSS5 URUWRR5 g!,(df   N5=fr^)rr�r=rGrrr�r�)rr
�
expected_helpr�s    r�_test_subparser_help�&TestAddSubparsers._test_subparser_help�
sT��
�
�
�2�
3�r��K�K�"�"�8�>�>�#3�4�4��������(;�(;�<�4�
3�s�*A/�/
A=c�P�URS[R"S55 g)Nz5.0 1 -ha            usage: PROG bar 1 [-h] [-w W] {a,b,c}

            1 description

            positional arguments:
              {a,b,c}     x help

            options:
              -h, --help  show this help message and exit
              -w W        w help
            �r�r�r�r!s r�test_subparser1_help�&TestAddSubparsers.test_subparser1_help�
�"���!�!�*�h�o�o�?�/�	rc�P�URS[R"S55 g)Nz5.0 2 -ha            usage: PROG bar 2 [-h] [-y {1,2,3}] [z ...]

            2 description

            positional arguments:
              z           z help

            options:
              -h, --help  show this help message and exit
              -y {1,2,3}  y help
            r�r!s r�test_subparser2_help�&TestAddSubparsers.test_subparser2_help�
r�rc
��URSS9nURURSR55[	SSSSS9/45 URURSR55[	SSSSS9/45 g)	NT�rz
0.5 1alias1 bFr�r�r;z
0.5 1alias2 b)rrrDrr�r<s  r�test_alias_invocation�'TestAddSubparsers.test_alias_invocation�
s����!�!�$�!�/������#�#�O�$9�$9�$;�<�
�E�s�d�c�
2�B�7�	
�	
����#�#�O�$9�$9�$;�<�
�E�s�d�c�
2�B�7�	
rc�v�URSS9nURURSR55 g)NTr�z
0.5 1alias3 b)rrrGrr<s  r�test_error_alias_invocation�-TestAddSubparsers.test_error_alias_invocation�
s8���!�!�$�!�/���&�&�v�'8�'8�'6�'<�'<�'>�	@rc��URSSS9nSUlURUR5[R
"S55 g)NT)rr(a	            usage: PROG [-h] [--foo] bar COMMAND ...

            main description

            positional arguments:
              bar                   bar help

            options:
              -h, --help            show this help message and exit
              --foo                 foo help

            commands:
              COMMAND
                1 (1alias1, 1alias2)
                                    1 help
                2                   2 help
                3                   3 help
            )r�maxDiffrrPr�r�r<s  r�test_alias_help�!TestAddSubparsers.test_alias_help�
sH���!�!�$�t�!�D���������+�+�-�x���@�0�	r)r3r�r=)FNF)%r&r'r(r)r*rrrXr6r>rErLrTrYr\rbrfrjrprwr{r~r�r�r�r�r�r�r�r�r�r�r�r�r�r+r,r-s@rrr�s����(�@�>B�!�7�rI�
I�
�&
�,
#�T�,9�8;�>�/�/�'�

�

�'��"�&�$ �D�$�*�<=�
��	
�@�
�rrc�*�\rSrSrSrSrSrSrSrg)�TestPositionalsGroupsi�
z@Tests that order of group positionals matches construction orderc��[5nURS5 URS5nURS5 URS5 [SSSS9nUR	S	R55nUR
X45 g)
Nr3r�rqrrrrr�r.r��1 2 3)r�r�r�r�rGrr�rr=r��expectedr�s     r�test_nongroup_first�)TestPositionalsGroups.test_nongroup_first�
sv��+�-�����E�"��)�)�#�.��
���5�!����E�"��#�3�C�0���"�"�7�=�=�?�3������*rc��[5nURS5nURS5 URS5 URS5 [SSSS9nUR	S	R55nUR
X45 g)
N�xxxr3rqrrrrr�r.r�r��r�r�r�r�rGrrr�s     r�test_group_first�&TestPositionalsGroups.test_group_first�
sv��+�-���)�)�%�0��
���5�!����E�"����E�"��#�3�C�0���"�"�7�=�=�?�3������*rc�\�[5nURS5nURS5 URS5 URS5 URS5nURS5 [SSS	S
S9nUR	SR55nUR
X45 g)
Nr�r3rqrrr4�frellrrr�r.r�)r3rqrrr�z1 2 3 4r�r�s     r�test_interleaved_groups�-TestPositionalsGroups.test_interleaved_groups�
s���+�-���)�)�%�0�����E�"�
���5�!����E�"��)�)�%�0��
���7�#��#�3�C�s�;���"�"�9�?�?�#4�5������*rr#N)	r&r'r(r)r*r�r�r�r+r#rrr�r��
s��J�+�+�
+rr�c�^�\rSrSrSrSrU4SjrSrSrSr	Sr
S	rS
rSr
SrS
rSrSrSrSrSrSrSrU=r$)�TestParentParsersi�
z5Tests that parsers can be created with parent parsersc�8�UR"[/UQ70UD6 gr^rr�s   rr�+TestParentParsers.assertArgumentParserError�
r	rc�>�[TU]5 [SS9UlURR	S5 URRS5nUR	S5 URR	S5 [SS9UlURR	S5 URR	S5 URRS	5nUR	S
5 [SS9UlURR	S5 [SS9UlURR	S5 [SS9Ul	URR5nUR	SSS
9 UR	SSS
9 [RR[RS5Ulg)NF�rxz--wr%r8r5r!r�r�z--dr�r,r-r)rrXr��wxyz_parentr�r��abcd_parent�w_parent�z_parent�ab_mutex_parent�add_mutually_exclusive_grouprbrk�basenamer�r��main_program)r�x_group�c_groupr�rs    �rrX�TestParentParsers.setUp�
sb���
��
��5�u�E������%�%�e�,��"�"�5�5�c�:�����T�"����%�%�c�*�5�u�E������%�%�c�*����%�%�d�+��"�"�5�5�c�:�����U�#�2�E�B��
��
�
�"�"�5�)�2�E�B��
��
�
�"�"�3�'� :�5�I����$�$�A�A�C��
���4���5�
���4���5��G�G�,�,�S�X�X�a�[�9��rc	��[UR/S9nURURSR	55[SSSS95 g)N��parentsz-y 1 2 --w 3r.rrr��rxr�r5)r�r�rrGrr�r<s  r�test_single_parent�$TestParentParsers.test_single_parentsE��+�T�5E�5E�4F�G������*�*�>�+?�+?�+A�B��c�S�C�0�	2rc��URURR5 [UR/S9nURUR5 g�Nr�)�_test_mutex_abr�rGr�r<s  r�test_single_parent_mutex�*TestParentParsers.test_single_parent_mutexsC�����D�0�0�;�;�<�+�T�5I�5I�4J�K�����F�-�-�.rc�|�UR/n[SUS9n[U/S9nURUR5 g)NF)rxr�r�)r�r�r�rG�rr�r=s   r�test_single_granparent_mutex�.TestParentParsers.test_single_granparent_mutexs<���'�'�(��+�U�G�L��+�V�H�=�����F�-�-�.rc��URU"/5[SSS95 URU"S/5[SSS95 URU"S/5[SSS95 URUSS/5 URUSS/5 URUS/5 URUSS/5 URUSS/5 g)NF�r!r�r�Tr�r�)rr�r)rrGs  rr�� TestParentParsers._test_mutex_ab%s�������B���e�u�)=�>�����T�F�+�R�$�%�-@�A�����T�F�+�R�%�4�-@�A��&�&�z�D�$�<�@��&�&�z�D�$�<�@��&�&�z�D�6�:��&�&�z�D�$�<�@��&�&�z�D�$�<�@rc��URUR/n[US9nURUR	SR55[
SSSSSSS95 g)Nr�z--d 1 --w 2 3 4r.rrr�r�)r!r�r�rxr�r5)r�r�r�rrGrr�r�s   r�test_multiple_parents�'TestParentParsers.test_multiple_parents/sZ���#�#�T�%5�%5�6��+�G�<������*�*�+<�+B�+B�+D�E��c�T�S�C�4�3�G�	Irc�b�URUR/n[US9nURUR	SR55[
SSSSSS95 URURSR55 URURS	R55 g)
Nr�z
-a --w 2 3TFr�r.)r!r�rxr�r5z
-a --w 2 3 -bz
-a -b --w 2 3)r�r�r�rrGrr�rr�s   r�test_multiple_parents_mutex�-TestParentParsers.test_multiple_parents_mutex5s����'�'��)9�)9�:��+�G�<������*�*�<�+=�+=�+?�@��d�e�s�d�c�B�	D��&�&�����4�4�6�	8��&�&�����4�4�6�	8rc��UR[R[RURUR
/S9 gr�)rr6rXr7r�r�r!s r�test_conflicting_parents�*TestParentParsers.test_conflicting_parents?s9������"�"��#�#��]�]�D�$4�$4�5�	�	7rc��UR[R[RURUR
/S9 gr�)rr6rXr7r�r�r!s r�test_conflicting_parents_mutex�0TestParentParsers.test_conflicting_parents_mutexEs;������"�"��#�#��%�%�t�';�';�<�	�	>rc	��URUR/n[US9nURUR	SR55[
SSSS95 g)Nr�rqr�r�)r�r�r�rrGrr�r�s   r�test_same_argument_name_parents�1TestParentParsers.test_same_argument_name_parentsKsM���#�#�T�]�]�3��+�G�<������*�*�5�;�;�=�9��d�d�c�2�	4rc
��[5nUR5nURSUR/S9nUR	S5 URUR
SR55[SSSSS	95 g)
Nrqr�r�zbar -b 1 --d 2 3 4r.rrr�r�)r!r�r�r�)	r�r%r'r�r�rrGrr�)rr=r*�abcde_parsers    r�test_subparser_parents�(TestParentParsers.test_subparser_parentsQsw��+�-���*�*�,�
�!�,�,�U�T�=M�=M�<N�,�O���!�!�#�&�����*�*�+?�+E�+E�+G�H��c�S�C�3�7�	9rc��[5nUR5nUR/nURSUS9nUR	S5nURS5 URUR/nURSUS9nURS5 URURSR55[SS	S
S95 URURSR55[S	SS
SSS
S95 URURSR55 URURSR55 g)Nr3r�r�r�rqr�zfoo -a 4TFr�r�zbar -b  --w 2 3 4r�r.)r!r�rxr�r5r�zfoo -a -b 4zbar -b -a 4)r�r%r�r'r�r�r�rrGrr�r)rr=r*r��
abc_parserr��wxyzabe_parsers       r�test_subparser_parents_mutex�.TestParentParsers.test_subparser_parents_mutexYs>��+�-���*�*�,�
��'�'�(���*�*�5�'�*�B�
��/�/�	�:�����S�!��#�#�T�%9�%9�:��#�.�.�u�g�.�F���#�#�C�(�����*�*�:�+;�+;�+=�>��d�e�s�3�	5�����*�*�+>�+D�+D�+F�G��e�t�s�d�c�S�I�	K��&�&����}�2�2�4�	6��&�&����}�2�2�4�	6rc	��URUR/n[US9nUR5nURnURU[R"SRXD(aSOS555 g)Nr�aG            usage: {}{}[-h] [-b B] [--d D] [--w W] [-y Y] a z

            positional arguments:
              a
              z

            options:
              -h, --help  show this help message and exit
              -b B
              --w W

            c:
              --d D

            x:
              -y Y
        � r$)	r�r�r�rPr�rr�r��format)rr�r=�parser_help�prognames     r�test_parent_help�"TestParentParsers.test_parent_helplsm���#�#�T�%5�%5�6��+�G�<���(�(�*���$�$������h�o�o�7�"
�F�8�H�S�"�6�#'8�	9rc	���[SS9nURSSS9nURS5 URS5 UR5nURS5 URS	5 [U/S
9nUR	[
UR/SQ5 UR5nURnURU[R"SRXf(aS
OS555 g)NFr�r��gd�rrr�r r8r3r��r8r�r3r�z�            usage: {}{}[-h] [-w W] [-x X] [-y Y | -z Z]

            options:
              -h, --help  show this help message and exit
              -y Y
              -z Z

            g:
              gd

              -w W
              -x X
        rr$)
r�r�r�r�rr�rGrPr�rr�r�r)r�parentr�r�r=rrs       r�test_groups_parents�%TestParentParsers.test_groups_parents�s���+�U�;���%�%�C�T�%�B��	���t��	���t���/�/�1��	���t��	���t��+�V�H�=�����-�v�/@�/@�"�	$��(�(�*���$�$������h�o�o�
7�
�F�8�H�S�"�6�
'8�
	9rc�8�UR[[S/S9 g)Nr�r�)rr�r�r!s r�test_wrong_type_parents�)TestParentParsers.test_wrong_type_parents�s�����)�%?�!���Mrc��[SS9nURSSS9nURS5 URS5 UR5nURS5 URS	5 [S
U/S9nUR	[
UR/SQ5 UR5nURU[R"S
55 g)NFr�r�rrr�r r8r3r)r
r�r	z�            usage: PROG [-h] [-w W] [-x X] [-y Y | -z Z]

            options:
              -h, --help  show this help message and exit

            g:
              gd

              -w W
              -x X
              -y Y
              -z Z
        )r�r�r�r�rr�rGrPrr�r�)rr
r�r�r=rs      r�test_mutex_groups_parents�+TestParentParsers.test_mutex_groups_parents�s���+�U�;���%�%�C�T�%�B��	���t��	���t��
�*�*�,��	���t��	���t��+��&��J�����-�v�/@�/@�"�	$��(�(�*������h�o�o�
7�
'
�
	r)r�r�r�r�r�r�)r&r'r(r)r*rrXr�r�r�r�r�r�r�r�r�r�r�rrrrr+r,r-s@rr�r��
sd���?�@�:�82�
/�
/�A�I�8�7�>�4�9�6�&9�09�<N��rr�c�2�\rSrSrSrSrSrSrSrSr	g)	� TestMutuallyExclusiveGroupErrorsi�c�\�[5nURnU"[URSS9 g)Nr3)r)r�rr�r�)rr=�raisess   r�test_invalid_add_argument_group�@TestMutuallyExclusiveGroupErrors.test_invalid_add_argument_group�s'��+�-���"�"���y�&�=�=�U�Krc��[5nUR5nURnURnU"[USSS9 U"[US5 U"[USSS9 U"[USSS9 U"[US[
RS9 g)Nr"Trsrqr�r�r�)r�r�r�rr�r6�PARSER)rr=r�r�rs     r�test_invalid_add_argument�:TestMutuallyExclusiveGroupErrors.test_invalid_add_argument�sv��+�-���3�3�5���)�)���"�"���z�<��4�@��z�<��/��z�<��c�:��z�<��a�8��z�<��h�o�o�Frc�B�[SS9nUR5nURSSS9 URSSS9 UR5nURSSS9 URS	SS9 S
nURUR	5[
R"U55 g)Nr�r
r"r,r-r\r�z--soupz--nutsz�            usage: PROG [-h] [--foo | --bar] [--soup | --nuts]

            options:
              -h, --help  show this help message and exit
              --foo
              --bar
              --soup
              --nuts
              )r�r�r�rrPr�r�)rr=�group1�group2r�s     rr��*TestMutuallyExclusiveGroupErrors.test_help�s���+��8���4�4�6�����G�L��9����G�M��:��4�4�6�����H�\��:����H�]��;�	��	
����+�+�-�x���x�/H�Irc	��SUl[SS9nURSSS9nURS5nUR	5nURSS[RS	9 URS
S[RS	9 SnSnURU5 S
USUSUSUS3	nURUR5[R"U55 g)Nrrrr`)rrUr3r�r,r�--quietz�--longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglongڀLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGz>            usage: PROG foo [-h]
                            [rzj]

            options:
              -h, --help            show this help message and exit
              z
              )r�r�r%r'r�r�r6r�rrPr�r�)rr=r�cmd_foor��longopt�longmetar�s        r�Ctest_help_subparser_all_mutually_exclusive_group_members_suppressed�dTestMutuallyExclusiveGroupErrors.test_help_subparser_all_mutually_exclusive_group_members_suppressed�s������+��8���(�(�z�	�(�J���%�%�e�,���4�4�6��
���;�|�(�BS�BS��T�
���9�\��@Q�@Q��R�"�������W�%��%�Y�a��z�2��i�q��
�#�
��	
����,�,�.�����0I�Jrc���[R"5nUR5nUR[5 URS/5 SSS5 g!,(df   g=f)NrA)r6r7r�rr�rG�rr=r�s   r�test_empty_group�1TestMutuallyExclusiveGroupErrors.test_empty_groupsH���(�(�*���3�3�5��
�
�
�z�
*����t�f�%�+�
*�
*�s�A�
A%)r�N)
r&r'r(r)rrr�r(r,r+r#rrrr�s��L�
	G�J�(K�*&rrc�D�\rSrSrSrSrSrSrSrSr	Sr
S	rS
rg)�MEMixinic��URSS9Rn[nURH;nUR	US9 URX!UR
55 SSS5 M= g!,(df   MO=f�NFrsr��
get_parserrGr�r
rHrr�rrGr��args_strings    r�test_failures_when_not_required�'MEMixin.test_failures_when_not_required
sa���_�_�e�_�4�?�?�
�#���=�=�K����;��/��!�!�%�[�5F�5F�5H�I�0�/�)�/�/�s�!A,�,
A;	c��URSS9Rn[nURS/-H;nUR	US9 URX!UR
55 SSS5 M= g!,(df   MO=f)NTrsr$rr2r4s    r�test_failures_when_required�#MEMixin.test_failures_when_requiredsh���_�_�d�_�3�>�>�
�#���=�=�B�4�/�K����;��/��!�!�%�[�5F�5F�5H�I�0�/�0�/�/�s�!A0�0
A?	c� �URSS9RnURUR-nUHDup4UR	US9 U"UR55nUR
XT5 SSS5 MF g!,(df   MX=fr1)r3rGr�successes_when_not_requiredrHrr)rrGrr5r�	actual_nss      r� test_successes_when_not_required�(MEMixin.test_successes_when_not_requiredsw���_�_�e�_�4�?�?�
��N�N�T�%E�%E�E�	�(1�$�K����;��/�&�{�'8�'8�':�;�	�� � ��8�0�/�)2�/�/�s�	(A>�>
B
	c��URSS9RnURHDup#URUS9 U"UR	55nURXC5 SSS5 MF g!,(df   MX=f)NTrsr)r3rGrrHrr)rrGr5rr=s     r�test_successes_when_required�$MEMixin.test_successes_when_required sg���_�_�d�_�3�>�>�
�(,���$�K����;��/�&�{�'8�'8�':�;�	�� � ��8�0�/�)7�/�/�s�(A/�/
A>	c��URSS9RnURnURU"5[R
"U55 g�NFrs)r3rO�usage_when_not_requiredrr�r��rrO�expected_usages   r�test_usage_when_not_required�$MEMixin.test_usage_when_not_required's>�������6�C�C���5�5�����������)H�Irc��URSS9RnURnURU"5[R
"U55 g�NTrs)r3rO�usage_when_requiredrr�r�rFs   r�test_usage_when_required� MEMixin.test_usage_when_required,s>�������5�B�B���1�1�����������)H�Irc��URSS9RnURUR-nUR	U"5[
R"U55 grD)r3rPrErNrr�r��rrPrNs   r�test_help_when_not_required�#MEMixin.test_help_when_not_required1sG���o�o�u�o�5�A�A���+�+�d�i�i�7�����������(=�>rc��URSS9RnURUR-nUR	U"5[
R"U55 grK)r3rPrLrNrr�r�rPs   r�test_help_when_required�MEMixin.test_help_when_required6sG���o�o�t�o�4�@�@���'�'�$�)�)�3�����������(=�>rr#N)
r&r'r(r)r6r9r>rArHrMrQrTr+r#rrr/r/s.��J�J�9�9�J�
J�
?�
?rr/c	��\rSrSrSSjrSS/rS\"SSS94S	\"S
SS94S\"SSS94S
\"SS
S94/rS\"SSS94/rSr	Sr
SrSrg)�TestMutuallyExclusiveSimplei<Nc�z�[SS9nURUS9nURSSS9 URSSS	S
S9 U$)Nrrrsr\rr�r�r�r��baz help)r�r2rN�r�r�r��rr�r=r�s    rr3�&TestMutuallyExclusiveSimple.get_parser>sN��+��8���3�3�X�3�F��
���7���4�
���7�#�S�z��J��
r�--bar X --baz Yz
--bar X --baz�--bar Xrc�rqrrz--bar X --bar Zr��--baz Yr�r�r$z;        usage: PROG [-h] [--bar BAR | --baz [BAZ]]
        z;        usage: PROG [-h] (--bar BAR | --baz [BAZ])
        z�
        options:
          -h, --help   show this help message and exit
          --bar BAR    bar help
          --baz [BAZ]  baz help
        r#r^�
r&r'r(r)r3r
r�rr<rErLrNr+r#rrrWrW<s����"�?�3�H�	�B�3�D�)�*�	�B�3�D�1�2�	�B�4�S�)�*�	�"��3�'�(�	�I�
�R�D�d�
#�$�#�������DrrWc��\rSrSrSSjrS/rS\"SSSSS94S\"S	SSSS94S
\"SSSSS94S\"SS	SSS94/rS\"SSSSS94/rS
r	Sr
SrSrg)�TestMutuallyExclusiveLongi_Nc��[SS9nURSSS9 URSSS9 URUS9nURS	S
S9 URSSS9 U$)
Nrrz--abcdez
abcde helpr�z--fghijz
fghij helprsz--klmnoz
klmno helpz--pqrstz
pqrst help�r�r�r�r[s    rr3�$TestMutuallyExclusiveLong.get_parserasp��+��8�����I�L��9����I�L��9��3�3�X�3�F��
���9�<��8�
���9�<��8��
rz--klmno X --pqrst Yz	--klmno Xrc)�abcde�fghij�klmno�pqrstz--abcde Y --klmno Xr�z	--pqrst Xz--pqrst X --fghij Yr$zi    usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ] [--klmno KLMNO |
                --pqrst PQRST]
    zi    usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ] (--klmno KLMNO |
                --pqrst PQRST)
    z�
    options:
      -h, --help     show this help message and exit
      --abcde ABCDE  abcde help
      --fghij FGHIJ  fghij help
      --klmno KLMNO  klmno help
      --pqrst PQRST  pqrst help
    r#r^rar#rrrcrc_s����&�&�H�	�b�t�4�s�$�G�H�	��S��C�t�<�	>�	�b�t�4�t�3�G�H�	��T��D��<�	>��I�
�R�d�$�d�$�
?�@�#�������Drrcc�t�\rSrSrSrS/rS\"SSS94S\"S	SS94S
\"SSS94/rS
\"SSS94/rSr	Sr
SrSrg)�$TestMutuallyExclusiveFirstSuppressedi�c��[SS9nURUS9nURS[RS9 URSSSS	9 U$)
Nrrrsr r�r8r�rr�r�r�r�r6r�r[s    rr3�/TestMutuallyExclusiveFirstSuppressed.get_parser�sR��+��8���3�3�X�3�F��
���4�h�&7�&7��8�
���4�
�H��E��
rz-x X -yz-x XrcTr�z	-x X -x Yr�r8NFr$z&        usage: PROG [-h] [-y]
        z$        usage: PROG [-h] -y
        zm
        options:
          -h, --help  show this help message and exit
          -y          y help
        r#rar#rrrlrl�st����{�H�	��c�T�"�#�	�b�3�$�'�(�	
�r�D�E�"�#��I�
�R�$�$�
� �#�������Drrlc
��\rSrSrSr/SQrS\"SSSS94S\"S	S	SS94S
\"S	SSS94S\"SSSS94/rS
\"S	SSS94/rS=r	r
SrSrg)�#TestMutuallyExclusiveManySuppressedi�c���[SS9nURUS9nURnU"SS[RS9 U"SS[RS9 U"S	[RS
9 U$)Nrrrs�--spamr,rr[r�z	--bladderr�rn)rr�r=r�rss     rr3�.TestMutuallyExclusiveManySuppressed.get_parser�sc��+��8���3�3�X�3�F��� � ���H�\��0A�0A�B��J�}�8�3D�3D�E��K�h�/�/�0��
r)z--spam --badgerz--badger --bladder Bz--bladder B --spamrsTN)r�ra�bladderr[Fz--bladder Broz
--spam --spamr$z!        usage: PROG [-h]
        �P
        options:
          -h, --help  show this help message and exit
        r#�
r&r'r(r)r3r
r�rr<rLrErNr+r#rrrqrq�s�����H�
�2�4��d�;�<�	�R�U�5�$�?�@�	���d�C�@�A�	�"�$�t�T�B�C�	�I�
�R�U�4��
6�7�#��5���1��Drrqc
��\rSrSrSr/SQrS\"SS/S94S\"S	S
/S94S\"S	SS/S94S\"S	S/S
QS94/rS\"S	S/S94/rSr	Sr
SrSrg)�*TestMutuallyExclusiveOptionalAndPositionali�c��[SS9nURUS9nURSSSS9 URSS	S
9 URSSS
S9 U$)Nrrrsr"r,�FOOrrs�SPAMr�rar��BADGERr#rZr[s    rr3�5TestMutuallyExclusiveOptionalAndPositional.get_parser�sa��+��8���3�3�X�3�F��
���7�<�e��D�
���8�&��1�
���8�3�X��>��
r)z--foo --spam Sz
--spam S XzX --foozX Y Z --spam S�	--foo X Yr"TN�r3r�raz--spam SF�SrczX Y Z)rcr�r�r$zD        usage: PROG [-h] [--foo | --spam SPAM | badger ...]
        zD        usage: PROG [-h] (--foo | --spam SPAM | badger ...)
        z�
        positional arguments:
          badger       BADGER

        options:
          -h, --help   show this help message and exit
          --foo        FOO
          --spam SPAM  SPAM
        r#rar#rrryry�s�����H�
�"��D��4�5�	�R�E��B�7�8�	�b�U��s�e�4�5�	�"��T�/�B�C�	�I�
�R�E��R�
0�1�#������	�Drryc��\rSrSrSr/SQrS\"SSSSSS94S\"SSSSSS94S	\"SSSSSS94S
\"SSSSSS94S\"SSSSSS94S\"SSSSSS94/rS
\"SSSSSS94S\"SSSSSS94S\"SSSSSS94/rS=r	r
SrSrg)�#TestMutuallyExclusiveOptionalsMixedi�c���[SS9nURSSSS9 URUS9nURSSS	S9 URS
SSS9 URSSS
S9 URSSSS9 U$)Nrrr r,rrrsr��a helpr��b helpr8rr��c helprer[s    rr3�.TestMutuallyExclusiveOptionalsMixed.get_parser�s���+��8�����D��H��E��3�3�X�3�F��
���4��8��D�
���4��8��D����D��H��E�
���4��8��D��
r)z-a -b�-b -cz-a -cz-a -b -cr�TF�r!r�r�r%r�r�r�z-a -xz-y -bz-x -y -cr$r r8z:        usage: PROG [-h] [-x] [-a] [-b] [-y] [-c]
        z�
        options:
          -h, --help  show this help message and exit
          -x          x help
          -a          a help
          -b          b help
          -y          y help
          -c          c help
        r#Nrwr#rrr�r��s����7�H�	
�r�D�E�U�e�u�=�>�	
�r�E�T�U�e�u�=�>�	
�r�E�U�d�e�u�=�>�	�"�t�u����?�@�	�"�u����$�?�@�	�R�%�5�D�D�D�A�B�
�I�
�R�%�5�E�U�e�
<�=�	
�r�E�U�e�t�u�=�>�	
�r�E�U�e�u��=�>�#��5���1�	�Drr�c�j�\rSrSrSSjrSS/rS\"SSS94S	\"SS
S94/rS\"SSS94/rSr	S
r
SrSrg)�TestMutuallyExclusiveInGroupi&
Nc��[SS9nURSSS9nURUS9nURSSS	9 URS
SS	9 U$)NrrzTitled groupzGroup descriptionrrsr\rr�r�rY)r�r�r�r�)rr�r=�titled_group�mutex_groups     rr3�'TestMutuallyExclusiveInGroup.get_parser(
sk��+��8���0�0� �.A�1�C��
�5�5�x�5�H�	�� � ��z� �:�� � ��z� �:��
rr]z--baz X --bar Yr^rcr_r`r�r$z9        usage: PROG [-h] [--bar BAR | --baz BAZ]
        z9        usage: PROG [-h] (--bar BAR | --baz BAZ)
        z�
        options:
          -h, --help  show this help message and exit

        Titled group:
          Group description

          --bar BAR   bar help
          --baz BAZ   baz help
        r#r^rar#rrr�r�&
si���"�#4�5�H�	�B�3�D�)�*�	�B�4�S�)�*��I�

�R�D�d�
#�$�#������
�Drr�c
���\rSrSrSr/SQrS\"SSSSSS94S	\"S
SSSSS94S\"S
SSSSS94S
\"SSSSSS94S\"S
SSSSS94/rS\"S
SSSSS94S\"S
SSSSS94/rS=r	r
SrSrg
)�1TestMutuallyExclusiveOptionalsAndPositionalsMixediN
c���[SS9nURSSS9 URSSSS	9 URUS
9nURSSS
S9 URSSSS	9 URSSSS	9 U$)Nrrr%rr�r8r,rrrsr!r�r�r#r�r�r�r�rer[s    rr3�<TestMutuallyExclusiveOptionalsAndPositionalsMixed.get_parserP
s���+��8�����C�h��/����D��H��E��3�3�X�3�F��
���3�c���9�
���4��8��D�
���4��8��D��
r)zX A -br�z-c X AzX Ar�Frcr�zX -bNTzX -czX A -yzX -y -bzX -yz6        usage: PROG [-h] [-y] [-b] [-c] x [a]
        a
        positional arguments:
          x           x help
          a           a help

        options:
          -h, --help  show this help message and exit
          -y          y help
          -b          b help
          -c          c help
        r#rwr#rrr�r�N
s����-�H�	��S�E�U�c�U�;�<�	��d�d�e�s�e�<�=�	��d�e�t�s�e�<�=�	�2��u����=�>�	�B����#��>�?��I�

�b�4�5�E�S�E�:�;�	��d�e�u��t�<�=�#��
5���1��Drr�c�6�\rSrSrSrSrSrSrSrSr	Sr
SrSrg)�TestMutuallyExclusiveNestediw
c�f�[SS9nURUS9nURS5 URS5 [R"5 [R
"S[5 URUS9nSSS5 WRS5 URS5 [R"5 [R
"S[5 URUS9nSSS5 WRS	5 URS
5 U$!,(df   N�=f!,(df   NC=f)Nrrrsr�r�r/r�r�r�rA)r�r�r��warnings�catch_warnings�simplefilterr�)rr�r=r�r �group3s      rr3�&TestMutuallyExclusiveNested.get_parser~
s���+��8���3�3�X�3�F��
���4� �
���4� �
�
$�
$�
&��!�!�(�,>�?��7�7��7�J�F�'�	���D�!����D�!�
�
$�
$�
&��!�!�(�,>�?��8�8�(�8�K�F�'�	���D�!����D�!��
�'�
&��
'�
&�s�+D�:+D"�
D�"
D0zO        usage: PROG [-h] [-a A | -b B | [-c C | -d D | [-e E | -f F]]]
        zO        usage: PROG [-h] (-a A | -b B | (-c C | -d D | (-e E | -f F)))
        z�
        options:
          -h, --help  show this help message and exit
          -a A
          -b B
          -c C
          -d D
          -e E
          -f F
        Nr#)
r&r'r(r)r3rErLrNr6r9r>rAr+r#rrr�r�w
s8���"����
�D�'+�#�"&��'+�$�#'� rr�c�z�\rSrSrSSjrSS/rS\"SSS94S	\"SSS94S
\"SSS94/rS\"SSS94/rSr	S
r
SrSrg)�%TestMutuallyExclusiveOptionalOptionali�
Nc�x�[SS9nURUS9nURS5 URSSS9 U$)Nrrrsr"r\r�r�rZr[s    rr3�0TestMutuallyExclusiveOptionalOptional.get_parser�
sE��+��8���3�3�X�3�F��
���7�#�
���7�#��.��
r�--foo X --bar Yz
--foo X --bar�--foo Xrcrur^r\r$z;        usage: PROG [-h] (--foo FOO | --bar [BAR])
        z;        usage: PROG [-h] [--foo FOO | --bar [BAR]]
        z{
        options:
          -h, --help   show this help message and exit
          --foo FOO
          --bar [BAR]
        r#r^rwr#rrr�r��
s|���	���H�

�B�3�D�)�*�	�B�4�S�)�*�	�"��4�(�)��I�
�R�D�d�
#�$�#�������Drr�c�z�\rSrSrSSjrSS/rS\"SSS	94S
\"SSS	94S\"SSS	94/rS
\"SSS	94/rSr	Sr
SrSrg)�(TestMutuallyExclusiveOptionalWithDefaulti�
Nc��[SS9nURUS9nURS5 URS[SS9 U$)Nrrrsr"r\Trf�r�r�r�r�r[s    rr3�3TestMutuallyExclusiveOptionalWithDefault.get_parser�
sG��+��8���3�3�X�3�F��
���7�#�
���7��t��<��
rr�z--foo X --bar=r�rcTrur^z--bar=Fr$z9        usage: PROG [-h] (--foo FOO | --bar BAR)
        z9        usage: PROG [-h] [--foo FOO | --bar BAR]
        zx
        options:
          -h, --help  show this help message and exit
          --foo FOO
          --bar BAR
        r#r^rwr#rrr�r��
s|���	���H�

�B�3�D�)�*�	�B�4�T�*�+�	�2�$�E�*�+��I�
�R�D�d�
#�$�#�������Drr�c�h�\rSrSrSSjrS/rS\"SSS94S\"SSS94/rS	\"SSS94/rS
r	Sr
SrS
rg)�*TestMutuallyExclusivePositionalWithDefaulti�
Nc��[SS9nURUS9nURS5 URSS[SS9 U$)	Nrrrsr"rqr�Trpr�r[s    rr3�5TestMutuallyExclusivePositionalWithDefault.get_parser�
sI��+��8���3�3�X�3�F��
���7�#�
���5��$���E��
rrr�rcTrur$z3        usage: PROG [-h] (--foo FOO | bar)
        z3        usage: PROG [-h] [--foo FOO | bar]
        z�
        positional arguments:
          bar

        options:
          -h, --help  show this help message and exit
          --foo FOO
        r#r^rwr#rrr�r��
sj���	��H�
�B�3�D�)�*�	�b�T�t�$�%��I�

�R�D�d�
#�$�#�������Drr�c�,^�\rSrSrSU4SjjrSrU=r$)�MEPBaseic�V>�[[U]US9n[URSU/S9nU$)NrsF)r
rxr�)rr�r3r�r
)rr�r
r=rs    �rr3�MEPBase.get_parsers4����w��0�(�0�C��+����u�v�h�@���
rr#r^)r&r'r(r)r3r+r,r-s@rr�r�s
����rr�c��\rSrSrSrg)�&TestMutuallyExclusiveGroupErrorsParentir#Nr�r#rrr�r����rr�c��\rSrSrSrg)�!TestMutuallyExclusiveSimpleParenti#r#Nr�r#rrr�r�#r�rr�c��\rSrSrSrg)�TestMutuallyExclusiveLongParenti(r#Nr�r#rrr�r�(r�rr�c��\rSrSrSrg)�*TestMutuallyExclusiveFirstSuppressedParenti-r#Nr�r#rrr�r�-r�rr�c��\rSrSrSrg)�)TestMutuallyExclusiveManySuppressedParenti2r#Nr�r#rrr�r�2r�rr�c��\rSrSrSrg)�0TestMutuallyExclusiveOptionalAndPositionalParenti7r#Nr�r#rrr�r�7r�rr�c��\rSrSrSrg)�)TestMutuallyExclusiveOptionalsMixedParenti<r#Nr�r#rrr�r�<r�rr�c��\rSrSrSrg)�7TestMutuallyExclusiveOptionalsAndPositionalsMixedParentiAr#Nr�r#rrr�r�Ar�rr�c�>�\rSrSrSrSrSrSrSrSr	Sr
S	rg
)�TestSetDefaultsiIc���[5nURSS9 URSSS9 UR[SSSS9UR	/55 UR[SSSS9UR	/[555 UR[SSSS9UR	/[SS955 UR[SSSS9UR	/[SSS	955 g)
Nr3r$rqr�)r�r5r�rrr�)r%r5�r��set_defaultsrr�rGr<s  r�test_set_defaults_no_args�)TestSetDefaults.test_set_defaults_no_argsKs���+�-�����e��$����e�q��)�����e�u��2��*�*�2�.�	0�����e�u��2��*�*�2�r�t�4�	6�����e�u��2��*�*�2�r�E�{�;�	=�����e�u��2��*�*�2�r�E�Q�/?�@�	Brc
���[5nURSSS9 URSSS9 UR[	SSS9UR/55 UR[	SSS9UR/[	555 UR[	SSS9UR/[	SS955 UR[	S	SS9URS
R
555 UR[	S	SS9URS
R
5[	555 UR[	S	SS9URS
R
5[	SS955 g)Nr3rqr�r �xfooxr�rrr$rrr�)r�r�r�rr�rGrr<s  r�test_set_defaults_with_args�+TestSetDefaults.test_set_defaults_with_argsXs6��+�-�����e�u��-����D�'��2�����g��/��*�*�2�.�	0�����g��/��*�*�2�r�t�4�	6�����e�u�-��*�*�2�r�E�{�;�	=�����c�U�+��*�*�6�<�<�>�:�	<�����c�U�+��*�*�6�<�<�>�2�4�@�	B�����c�U�+��*�*�6�<�<�>�2��;�G�	Irc��[5nURSS9 UR5nURS5nURSS9 UR	[SSS9UR
SR555 g)Nr3r$r!rqr�r�)r�r�r%r'rr�rGr)rr=r*�parser_as    r�test_set_defaults_subparsers�,TestSetDefaults.test_set_defaults_subparsersisu��+�-�����e��$��*�*�,�
��(�(��-�������&�����e�u�-��*�*�3�9�9�;�7�	9rc��[SS9nURSS9 [U/S9nUR[SS9UR	/55 g)NFr�r3r$r�r�)rr
r=s   r�test_set_defaults_parents�)TestSetDefaults.test_set_defaults_parentsrsH��+�U�;�����e��$�+�V�H�=������e��f�&7�&7��&;�<rc��[R"5nUR5RS5nUR	SS9 UR	SS9 UR[
SS9URS/55 g)Nrcr�r=r�)r6r7r%r'r�rr�rG)rr=�xparsers   r�)test_set_defaults_on_parent_and_subparser�9TestSetDefaults.test_set_defaults_on_parent_and_subparserxsl���(�(�*���'�'�)�4�4�S�9�������"������#�������F�$5�$5�s�e�$<�=rc	��[5nURSSSSS9 URS5 URSSS	9 URS
SS9 URS
SSS9 UR[	SSSSS9UR/55 URSSSSS9 UR[	SSSSS9UR/55 g)N�Wrcr�r�r�r�r �XXr�r�r�r�r5�ZZr��WW�YY)r�r�r�rr�rGr<s  r�&test_set_defaults_same_as_add_argument�6TestSetDefaults.test_set_defaults_same_as_add_arguments���+�-�����c�S�C�3��7����D�!����D�$��/����C�s��+����C�s�D��9�	
����c�T�S�D�9��*�*�2�.�	0�	���d�c�T�S��9�����d�c�T�S�9��*�*�2�.�	0rc	��[5nURSSSSS9 URS5nURS5 URSS	S
9 URSSS
9 URSSSS9 UR	[SS	SSS9UR
/55 URSSSSS9 UR	[SSSSS9UR
/55 g)Nr�rcr�r�r�r3r�r r�r�r�r�r�r5r�r�r�r�)r�r�r�r�rr�rGr+s   r�,test_set_defaults_same_as_add_argument_group�<TestSetDefaults.test_set_defaults_same_as_add_argument_group�s���+�-�����c�S�C�3��7��)�)�%�0��
���4� �
���4���.�
���3�c��*�
���3�c�4��8�	
����c�T�S�D�9��*�*�2�.�	0�	���d�c�T�S��9�����d�c�T�S�9��*�*�2�.�	0rr#N)r&r'r(r)r�r�r�r�r�r�r�r+r#rrr�r�Is'��B�I�"9�=�>�0�"0rr�c��\rSrSrSrSrg)�TestGetDefaulti�c��[5nURURS55 URURS55 URS5 URURS55 URURS55 URS[SS9 URURS55 URSURS55 UR
SS9 URSURS55 URSURS55 g)	Nr3rqr"r\r0rfrar=)r�rn�get_defaultr�r�rr�r<s  r�test_get_default�TestGetDefault.test_get_default�s��+�-�����&�,�,�U�3�4����&�,�,�U�3�4����G�$����&�,�,�U�3�4����&�,�,�U�3�4����G�#�r��:����&�,�,�U�3�4�����V�/�/��6�7������)�����6�#5�#5�e�#<�=�����V�/�/��6�7rr#N)r&r'r(r)r�r+r#rrr�r��s��8rr�c� �\rSrSrSrSrSrg)�TestNamespaceContainsSimplei�c�v�[R"5nURSU5 URSU5 g)Nr$r%)r6�	Namespace�assertNotIn�r�nss  r�
test_empty�&TestNamespaceContainsSimple.test_empty�s0��
�
�
�
!������R� �����b�!rc���[R"SSS9nURSU5 URSU5 URSU5 URSU5 URSU5 g)	Nr�r�r�r$r%r��xxr5)r6r�r�r�r�s  r�test_non_empty�*TestNamespaceContainsSimple.test_non_empty�s`��
�
�
�!�q�
)������R� ��
�
�c�2���
�
�c�2������r�"�����b�!rr#N)r&r'r(r)r�r�r+r#rrr�r��s��"�
"rr�c��\rSrSrSrSrg)�TestHelpFormattingMetaclassi�c�X�US:Xag"SS[5nSHupVU"XU5 M g)N�HelpTestCasec�8�\rSrSrSrSrSrSrSrSr	Sr
g	)
�6TestHelpFormattingMetaclass.__init__.<locals>.AddTestsi�c���X lX0lURURUR4H/nUR
<SU<3nU4SjnXVl[XU5 M1 g![a Nf=f)Nr�c��U"U5 gr^r#r�s  r�test_wrapper�UTestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__.<locals>.test_wrapper�r�r)�func_suffix�std_name�test_format�
test_print�test_print_filer&r�r�)r�
test_classr�rr�rr�s       rr�?TestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__�sw��#.� � (�
�"&�"2�"2�"&�/�/�"&�"6�"6�"8�I�,5�+=�+=�{� K�I�5>�(��09�-��J�<�@�"8��%����s�
A$�$
A1�0A1c�v�[R"URR0URRD6n[US/5H)nUR"UR0URD6 M+ [US/5nUHZupVUR"UR0URD6nUH)nUR"UR0URD6 M+ M\ [US/5nU(a?UR5n	UH)n
U	R"U
R0U
RD6 M+ U$)Nr��argument_group_signatures�subparsers_signatures)
r6r7r�r�r�r�r�r�r%r')rrr=�argument_sig�
group_sigs�	group_sig�
argument_sigsr��subparsers_sigsr*�
subparser_sigs           rr�BTestHelpFormattingMetaclass.__init__.<locals>.AddTests._get_parser�s=��!�0�0��,�,�1�1�6��-�-�4�4�6��%,�F�4I�2�$N�L��'�'��):�):�?�*6�*=�*=�?�%O�%�V�-H�"�M�
�0:�,�I�"�5�5�y�~�~�J�8A�8H�8H�J�E�(5���*�*�L�,=�,=�B�-9�-@�-@�B�)6�1;�#*�&�2I�2�"N��"�!'�!6�!6�!8�J�)8�
�"�-�-�}�/A�/A�G�1>�1E�1E�G�*9��
rc��[XR5n[R"U5nSUlURX25 gr^)r�r�r�r�r�r)rr�parser_text�
expected_texts    r�_test�<TestHelpFormattingMetaclass.__init__.<locals>.AddTests._tests5�� '��0@�0@� A�
� (���
� >�
�!%����"�"�=�>rc��URU5n[USUR-5nURX"55 g)Nz	format_%s)rr�r�r)rrr=rs    rr�BTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_formats9���)�)�&�1�� ���t�7G�7G�)G�H���
�
�6�6�8�,rc���URU5n[USUR-5n[[UR5n[[UR[
55 U"5 [[UR5R5n[[URU5 URX5 g![[URU5 f=f�Nzprint_%s)	rr�r�r�rr�r
rr)rrr=�print_�
old_streamrs      rr�ATestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_prints����)�)�&�1�� ���d�6F�6F�)F�G��$�S�$�-�-�8�
���T�]�]�K�M�:�<��H�")�#�t�}�}�"=�"F�"F�"H�K��C����
�;��
�
�6�/���C����
�;�s�)/C�C"c��URU5n[USUR-5n[5nU"U5 UR	5nURX5 gr)rr�r�r
rr)rrr=r�sfilers      rr�FTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_print_filesO���)�)�&�1�� ���d�6F�6F�)F�G��#�
���u�
�#�n�n�.���
�
�6�/r)r�rN)r&r'r(r)rrrrrrr+r#rrrr��s!��
A�"
�,
?�
-�


0�
0rr))�usager�)rNr�)r)rrtrrrr�rs       rr�$TestHelpFormattingMetaclass.__init__�s5���>�!��F	0�v�F	0�R&:�!�K��S�x�0�&:rr#Nr�r#rrr�r��s��O1rr�r�c	��\rSrSrSr\"SSSS9r\"SSS	S
S9\"SS
SS9\"SSS9\"SSS9\"SSS9/r/rSr	\	S-r
SrSrg)�TestHelpBiggerOptionalsi(�;Make sure that argument help aligns when options are longerr�DESCRIPTION�EPILOG�r
r�epilogr�r�r��0.1r�r r,�X HELPr�--y�Y HELPr�r3�FOO HELPrq�BAR HELPz;        usage: PROG [-h] [-v] [-x] [--y Y] foo bar
        aW
        DESCRIPTION

        positional arguments:
          foo            FOO HELP
          bar            BAR HELP

        options:
          -h, --help     show this help message and exit
          -v, --version  show program's version number and exit
          -x             X HELP
          --y Y          Y HELP

        EPILOG
    �        0.1
        r#N�
r&r'r(r)r*r�r�r�rrrNr�r+r#rrr"r"(s���E���M�"*�,��	�D�+�i��?��D��H�5��E��!��E�
�#��E�
�#���!#��
�E����D� �Grr"c��\rSrSrSrSr\Rr\Rr\Rr	Sr
\
S-r\RrSr
g)�TestShortColumnsiLz�Test extremely small number of columns.

TestCase prevents "COLUMNS" from being too small in the tests themselves,
but we don't want any exceptions thrown in such cases. Only ugly representation.
c�p�UR[R"55nURSS5 g)NrSr�)rTrrUr�rVs  rrX�TestShortColumns.setUpRs)�����	� =� =� ?�@�����	�4� rz�        usage: PROG
               [-h]
               [-v]
               [-x]
               [--y Y]
               foo
               bar
        a�
        DESCRIPTION

        positional arguments:
          foo
            FOO HELP
          bar
            BAR HELP

        options:
          -h, --help
            show this
            help
            message and
            exit
          -v, --version
            show
            program's
            version
            number and
            exit
          -x
            X HELP
          --y Y
            Y HELP

        EPILOG
    r#N)r&r'r(r)r*rXr"r�r�rrrNr�r+r#rrr1r1LsW���
!�#:�"J�"J��"9�"M�"M��"9�"S�"S��
�E����D�:#:�"A�"A�Grr1c	��\rSrSrSr\"SSSS9r\"SSS	S
S9\"SS
SS9\"SSS9\"SSS9\"SSS9/r\"SSS9\"SSS9\"SSSS9/4/rS r	\	S!-r
S"rS#rg$)%�TestHelpBiggerOptionalGroupsi�r#rr$r%r&r�r�r�r(r�r r,r)rr*r+r�r3r,rqr-zGROUP TITLEzGROUP DESCRIPTIONrrrzBAZ HELPr3r�zZ HELPr#zN        usage: PROG [-h] [-v] [-x] [--y Y] [-z Z [Z ...]] foo bar baz
        a�
        DESCRIPTION

        positional arguments:
          foo            FOO HELP
          bar            BAR HELP

        options:
          -h, --help     show this help message and exit
          -v, --version  show program's version number and exit
          -x             X HELP
          --y Y          Y HELP

        GROUP TITLE:
          GROUP DESCRIPTION

          baz            BAZ HELP
          -z Z [Z ...]   Z HELP

        EPILOG
    r.r#Nr/r#rrr5r5�s���E���M�"*�,��	�D�+�i��?��D��H�5��E��!��E�
�#��E�
�#���

�]�(;�	<���J�'���C�h�/�?1�	2�!��

�E����D�,�Grr5c�r�\rSrSrSr\"SSS9r\"SSSS	9\"S
SS9\"S
SS9\"SSS9/r/rSr	\	S-r
SrSrg)�TestHelpBiggerPositionalsi�z4Make sure that help aligns when arguments are longer�USAGEr$�rrr r,r)rr*r+r��ekiekiekifekangzEKI HELPrqr-�        usage: USAGE
        a
        DESCRIPTION

        positional arguments:
          ekiekiekifekang  EKI HELP
          bar              BAR HELP

        options:
          -h, --help       show this help message and exit
          -x               X HELP
          --y Y            Y HELP
        r$r#Nr/r#rrr7r7�sl��>���m�D���D��H�5��E��!���J�/��E�
�#�	��!#��
�E����D��Grr7c�z�\rSrSrSr\"SSS9r\"SSSS	9\"S
SSS	9/r\"S
SS9\"SSSS9/4/rSr	\	S-r
SrSrg)�TestHelpReformattingi��>Make sure that text after short names starts on the first linerze   oddly    formatted
description

that is so long that it should go onto multiple lines when wrappedrr r�zoddly
    formatted -x help�r�rNr�r4z
normal y helprz'
    oddly formatted group

descriptionrr�r,z` oddly 
formatted    -a  help  
    again, so long that it should be wrapped over multiple linesr�2        usage: PROG [-h] [-x XX] [-a] yyy
        a�
        oddly formatted description that is so long that it should go onto multiple
        lines when wrapped

        positional arguments:
          yyy         normal y help

        options:
          -h, --help  show this help message and exit
          -x XX       oddly formatted -x help

        title:
          oddly formatted group description

          -a          oddly formatted -a help again, so long that it should be wrapped
                      over multiple lines
        r$r#Nr/r#rrr=r=�s���H��
�)�*��	�D�$�&=�	>��C��_�5���

�W�#0�
1��d�<�$�%�
&�		'�
!��
�E����D�(�Grr=c�|�\rSrSrSr\"SSS9r\"SSSS	9\"S
SSS	9/r\"S
5\"SSSS9/4/rSr	\	S-r
SrSrg)�TestHelpWrappingShortNamesir>rzZD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
Drr r�zxXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXr?r�r4�dYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH�ALPHASr�r,zPAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHArr@a�
        D DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD
        DD DD DD DD D

        positional arguments:
          yyy         YH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH
                      YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH

        options:
          -h, --help  show this help message and exit
          -x XX       XHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH
                      HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HX

        ALPHAS:
          -a          AHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH
                      HHAAHHH HHAAHHH HHA
        r$r#Nr/r#rrrBrBsz��H���[�A���D�$�]�3��C��\�2���


�X����\��@�B�	C�!��
�E����D�,�GrrBc��\rSrSrSr\"SSS9r\"SSSS	S
9\"SSS
S9\"SSSS9/r\"S5\"SSSS9\"SSSS9/4/rSr	\	S-r
SrSrg)�TestHelpWrappingLongNamesi,z<Make sure that text after long names starts on the next liner8zZD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD Dr9r�r�r�zZV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV Vr�r �XXXXXXXXXXXXXXXXXXXXXXXXXzdXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHr?r��yyyyyyyyyyyyyyyyyyyyyyyyyrCrDr��AAAAAAAAAAAAAAAAAAAAAAAAAzdAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHr5�zzzzzzzzzzzzzzzzzzzzzzzzzzdZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHr;ag
        D DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD
        DD DD DD DD D

        positional arguments:
          yyyyyyyyyyyyyyyyyyyyyyyyy
                                YH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH
                                YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH

        options:
          -h, --help            show this help message and exit
          -v, --version         show program's version number and exit
          -x XXXXXXXXXXXXXXXXXXXXXXXXX
                                XH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH
                                XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XH

        ALPHAS:
          -a AAAAAAAAAAAAAAAAAAAAAAAAA
                                AH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH
                                AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AH
          zzzzzzzzzzzzzzzzzzzzzzzzz
                                ZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH
                                ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZH
        zs        V VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV
        VV VV VV VV V
        r#Nr/r#rrrFrF,s���F���z�B���D�+�i��D��D�(��6��C���5���

�X����h�\�:���X�L�9�;�	<�!��

�E����D�<�GrrFc�n�\rSrSrSr\"SS9r\"SSSS9\"S	S
SS9\"SSS
9\"SSSS9\"SSSS9\"SS\RS9\"SSS\RS9\"SSS\RS9\"S\R\RSS 9/	r
\"S!5\"S"SS#S9\"S$S%S&S9\"S'S'S
S9\"S(S(SS9/4/rS)r\S*-r
S+rS,rg-).�
TestHelpUsageib�Test basic usage messagesrrr�r�rxr#r r�r%r!r�r�r�)rNr�r�r�r"zWhether to foo�rNr.r\zWhether to barT)rNr�r.rAz--foobarz--barfoor-z--bazzzBazz!)r.r�rNr�r8r�r3r�r5r�r�a/        usage: PROG [-h] [-w W [W ...]] [-x [X ...]] [--foo | --no-foo]
                    [--bar | --no-bar]
                    [-f | --foobar | --no-foobar | --barfoo | --no-barfoo]
                    [--bazz | --no-bazz] [-y [Y]] [-z Z Z Z]
                    a b b [c] [d ...] e [e ...]
        az
        positional arguments:
          a                     a
          b                     b
          c                     c

        options:
          -h, --help            show this help message and exit
          -w W [W ...]          w
          -x [X ...]            x
          --foo, --no-foo       Whether to foo
          --bar, --no-bar       Whether to bar
          -f, --foobar, --no-foobar, --barfoo, --no-barfoo
          --bazz, --no-bazz     Bazz!

        group:
          -y [Y]                y
          -z Z Z Z              z
          d                     d
          e                     e
        r$r#N)r&r'r(r)r*r�r�r6r�r�r�rrrNr�r+r#rrrLrLbs��#���'���D��#�&��D��#�&��C�c���C�c��#��C�c��%��G�*�8�3Q�3Q�R��G�*�D�$�:�:�	<��D�*�j��1O�1O�P��H�X�;�;�&�/�/�g�	?���

�W����C�c�*���A�C�(���#�S�)���#�S�)�	
�	�!��
�E����D�,�GrrLc�P�\rSrSr\"SS9r\"SSS9\"SSS	S9/rS
r\S-rSr	S
r
g)�TestHelpUsageWithParenthesesi�rr�
positionalz(example) positional�r�rAz
--optionalz{1 (option A), 2 (option B)}zX        usage: PROG [-h] [-p {1 (option A), 2 (option B)}] (example) positional
        z�
        positional arguments:
          (example) positional

        options:
          -h, --help            show this help message and exit
          -p, --optional {1 (option A), 2 (option B)}
        r$r#N�r&r'r(r)r�r�r�rrNr�r+r#rrrPrP�sL����'���L�"8�9��D�,�(F�G���

�E����D��GrrPc��\rSrSrSr\"SSS9r/r\"S5\"SSS	9\"S
S
S	9/4\"S5\"SSS	9\"S
SS	9/4/rSr	\	S-r
SrSrg)�TestHelpOnlyUserGroupsi�rMrF�r
rx�xxxxr r%r�r!�yyyyr�r8r�z.        usage: PROG [-x X] [-y Y] a b
        zn
        xxxx:
          -x X  x
          a     a

        yyyy:
          b     b
          -y Y  y
        r$r#Nr/r#rrrUrU�s���#����7����	�V����3����#��
�	�

�V����#����3��
�	�	!��
�E��	�	�D��GrrUc�r�\rSrSrSr\"SS9r\"SSS9\"SS	S9\"S
5\"S5/r/rSr	\	S
-r
SrSrg)�TestHelpUsageLongProgi�z*Test usage messages where the prog is long�<PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPrr�r�rRr rcr!r�zz        usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
               [-h] [-w W] [-x X] a b
        z�
        positional arguments:
          a
          b

        options:
          -h, --help  show this help message and exit
          -w W
          -x X
        r$r#Nr/r#rrrZrZ�sa��4���)���D�#���D�#���C���C��	��!#��
�E��
�
�D��GrrZc��\rSrSrSr\"SS9r\"SSS9\"SS	S9\"S
SS9\"SS
S9\"S5\"S5/r/rSr	\	S-r
SrSrg)� TestHelpUsageLongProgOptionsWrapi�zATest usage messages where the prog is long and the optionals wrapr[rr��WWWWWWWWWWWWWWWWWWWWWWWWWrRr rGr8�YYYYYYYYYYYYYYYYYYYYYYYYYr3�ZZZZZZZZZZZZZZZZZZZZZZZZZr!r�a        usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
               [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] [-x XXXXXXXXXXXXXXXXXXXXXXXXX]
               [-y YYYYYYYYYYYYYYYYYYYYYYYYY] [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
               a b
        a-
        positional arguments:
          a
          b

        options:
          -h, --help            show this help message and exit
          -w WWWWWWWWWWWWWWWWWWWWWWWWW
          -x XXXXXXXXXXXXXXXXXXXXXXXXX
          -y YYYYYYYYYYYYYYYYYYYYYYYYY
          -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
        r$r#Nr/r#rrr]r]�su��K���)���D�(�#��D�(�#��D�(�#��D�(�#��C���C��
��!#��
�E����D��Grr]c�j�\rSrSrSr\"SSS9r\"S5\"S5\"S5/r/rS	r	\	S
-r
SrSrg
)�$TestHelpUsageLongProgPositionalsWrapizCTest usage messages where the prog is long and the positionals wrapr[FrV�aaaaaaaaaaaaaaaaaaaaaaaaa�bbbbbbbbbbbbbbbbbbbbbbbbb�cccccccccccccccccccccccccz�        usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
               aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
               ccccccccccccccccccccccccc
        ��
        positional arguments:
          aaaaaaaaaaaaaaaaaaaaaaaaa
          bbbbbbbbbbbbbbbbbbbbbbbbb
          ccccccccccccccccccccccccc
        r$r#Nr/r#rrrbrbsV��M���5�9���H�
��H�
��H�
���
!#��
�E�
���D��Grrbc	��\rSrSrSr\"SS9r\"SSS9\"SS	S9\"S
SS9\"SS
S9\"S5\"S5\"S5/r/rSr	\	S-r
SrSrg)�TestHelpUsageOptionalsWrapi*z,Test usage messages where the optionals wraprrr�r^rRr rGr8r_r3r`r!r�r�z�        usage: PROG [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] [-x XXXXXXXXXXXXXXXXXXXXXXXXX]
                    [-y YYYYYYYYYYYYYYYYYYYYYYYYY] [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
                    a b c
        a9
        positional arguments:
          a
          b
          c

        options:
          -h, --help            show this help message and exit
          -w WWWWWWWWWWWWWWWWWWWWWWWWW
          -x XXXXXXXXXXXXXXXXXXXXXXXXX
          -y YYYYYYYYYYYYYYYYYYYYYYYYY
          -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
        r$r#Nr/r#rrrhrh*s|��6���'���D�(�#��D�(�#��D�(�#��D�(�#��C���C���C����!#��
�E��
�
�D��Grrhc��\rSrSrSr\"SS9r\"S5\"S5\"S5\"S5\"S	5\"S
5/r/rSr	\	S-r
S
rSrg)�TestHelpUsagePositionalsWrapiPz.Test usage messages where the positionals wraprrr r8r3rcrdrez�        usage: PROG [-h] [-x X] [-y Y] [-z Z]
                    aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
                    ccccccccccccccccccccccccc
        a
        positional arguments:
          aaaaaaaaaaaaaaaaaaaaaaaaa
          bbbbbbbbbbbbbbbbbbbbbbbbb
          ccccccccccccccccccccccccc

        options:
          -h, --help            show this help message and exit
          -x X
          -y Y
          -z Z
        r$r#Nr/r#rrrjrjPsi��8���'���D�	��D�	��D�	��H�
��H�
��H�
�
��!#��
�E�
���D��Grrjc��\rSrSrSr\"SS9r\"SSS9\"SS	S9\"S
SS9\"S5\"S
5\"S5/r/rSr	\	S-r
SrSrg)�%TestHelpUsageOptionalsPositionalsWrapirz<Test usage messages where the optionals and positionals wraprrr rGrRr8r_r3r`rcrdrea        usage: PROG [-h] [-x XXXXXXXXXXXXXXXXXXXXXXXXX] [-y YYYYYYYYYYYYYYYYYYYYYYYYY]
                    [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
                    aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
                    ccccccccccccccccccccccccc
        aZ
        positional arguments:
          aaaaaaaaaaaaaaaaaaaaaaaaa
          bbbbbbbbbbbbbbbbbbbbbbbbb
          ccccccccccccccccccccccccc

        options:
          -h, --help            show this help message and exit
          -x XXXXXXXXXXXXXXXXXXXXXXXXX
          -y YYYYYYYYYYYYYYYYYYYYYYYYY
          -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
        r$r#Nr/r#rrrlrlrsr��F���'���D�(�#��D�(�#��D�(�#��H�
��H�
��H�
�
��!#��
�E����D��Grrlc�b�\rSrSrSr\"SS9r\"SSS9\"SS	S9\"S
SS9/r/rSr	\	S
-r
SrSrg)�TestHelpUsageOptionalsOnlyWrapi�z@Test usage messages where there are only optionals and they wraprrr rGrRr8r_r3r`z�        usage: PROG [-h] [-x XXXXXXXXXXXXXXXXXXXXXXXXX] [-y YYYYYYYYYYYYYYYYYYYYYYYYY]
                    [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
        z�
        options:
          -h, --help            show this help message and exit
          -x XXXXXXXXXXXXXXXXXXXXXXXXX
          -y YYYYYYYYYYYYYYYYYYYYYYYYY
          -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
        r$r#Nr/r#rrrnrn�s]��J���'���D�(�#��D�(�#��D�(�#���
!#��
�E�
���D��Grrnc�j�\rSrSrSr\"SSS9r\"S5\"S5\"S5/r/rS	r	\	S
-r
SrSrg
)� TestHelpUsagePositionalsOnlyWrapi�zBTest usage messages where there are only positionals and they wraprFrVrcrdrez~        usage: PROG aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
                    ccccccccccccccccccccccccc
        rfr$r#Nr/r#rrrprp�sV��L����7���H�
��H�
��H�
���
!#��
�E����D��Grrpc��\rSrSr\"SS9r\"SSSS9\"SS	S
S9\"SSS
S9\"SSSS9\"SSSS9\"SSSS9\"SSSS9\"SSSS9\"SSSS9\"S S!S"S9\"S#S$S%S9\"S&S'S(S9\"S)S*S+S9\"S,S-S.S9\"S/S0S1S9\"S2S3S4S9/rS5r\S6-rS7r	S8r
g9):�&TestHelpUsageMetavarsSpacesParenthesesi�rrz-n1z()�n1r?z-o1z(1, 2)�o1z-u1z (uu) �u1z-v1z( vv )�v1z-w1z(w)w�w1z-x1zx(x)�x1z-y1zyy)�y1z-z1z(zz�z1z-n2z[]�n2z-o2z[1, 2]�o2z-u2z [uu] �u2z-v2z[ vv ]�v2z-w2z[w]w�w2z-x2zx[x]�x2z-y2zyy]�y2z-z2z[zz�z2z�        usage: PROG [-h] [-n1 ()] [-o1 (1, 2)] [-u1  (uu) ] [-v1 ( vv )] [-w1 (w)w]
                    [-x1 x(x)] [-y1 yy)] [-z1 (zz] [-n2 []] [-o2 [1, 2]] [-u2  [uu] ]
                    [-v2 [ vv ]] [-w2 [w]w] [-x2 x[x]] [-y2 yy]] [-z2 [zz]
        a�
        options:
          -h, --help  show this help message and exit
          -n1 ()      n1
          -o1 (1, 2)  o1
          -u1  (uu)   u1
          -v1 ( vv )  v1
          -w1 (w)w    w1
          -x1 x(x)    x1
          -y1 yy)     y1
          -z1 (zz     z1
          -n2 []      n2
          -o2 [1, 2]  o2
          -u2  [uu]   u2
          -v2 [ vv ]  v2
          -w2 [w]w    w2
          -x2 x[x]    x2
          -y2 yy]     y2
          -z2 [zz     z2
        r$r#NrSr#rrrrrr�s�����'���E�4�d�+��E�8�$�/��E�8�$�/��E�8�$�/��E�6��-��E�6��-��E�5�t�,��E�5�t�,��E�4�d�+��E�8�$�/��E�8�$�/��E�8�$�/��E�6��-��E�6��-��E�5�t�,��E�5�t�,�!��&
�E�
���D�*�Grrrc�>�\rSrSrSrSrSrSrSrSr	Sr
S	rg
)�TestHelpUsageNoWhitespaceCrashi�c��[R"SS9nUR5nURS[RS9 URS5 [
R"S5nURUR5U5 g)Nrrrsr�z--eggs-eggs-eggs-eggs-eggs-eggszu        usage: PROG [-h]
                    [--eggs-eggs-eggs-eggs-eggs-eggs EGGS_EGGS_EGGS_EGGS_EGGS_EGGS]
        )	r6r7r�r�r�r�r�rrO�rr=�mutexrs    r�.test_all_suppressed_mutex_followed_by_long_arg�MTestHelpUsageNoWhitespaceCrash.test_all_suppressed_mutex_followed_by_long_arg�sx���(�(�f�5���3�3�5��
���8�(�*;�*;��<����=�>����!�
��	
����,�,�.��6rc�
�/SQn[R"S5nURSSSSS9 URSS	S
SRU5S9 [R
"S
5nUR
UR5U5 g)N)�123456�12345r��123�11111111111111r�r�zverbose moder,rN�targetszinstallation targetsr�r%�rNr�r�z�        usage: 11111111111111 [-h] [-v]
                              123456
        12345
        12345
        123 [123456
        12345
        12345
        123 ...]
        )r6r7r�rlr�r�rrO)r�mappingr=rs    r�test_newline_in_metavar�6TestHelpUsageNoWhitespaceCrash.test_newline_in_metavars���5���(�(�)9�:�����D�+�!/��	�	F����I�!7�"%�$(�I�I�g�$6�	�	8����	!�	
��	
����,�,�.��6rc��[R"SS9nURSSSS9 URSSS	9 S
nURUR	5U5 g)Nrrz--nilr$T)r�r�z--a�FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArRzqusage: PROG [-h] --nil 
            [--a AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA]
)r6r7r�rrO)rr=rs   r�test_empty_metavar_required_arg�>TestHelpUsageNoWhitespaceCrash.test_empty_metavar_required_arg!s_���(�(�f�5�����G�R�$��?����E�8��4�
)�	�
	
����,�,�.��6rc��[R"SS9nUR5nURSSSS[RS9 URSSSS[RS9 S	nURUR
5U5 g)
Nrrz--param1r�r��NAME)r�r2r�rNz--param2zusage: PROG [-h]
)r6r7r�r�r�rrOr�s    r�-test_all_suppressed_mutex_with_optional_nargs�LTestHelpUsageNoWhitespaceCrash.test_all_suppressed_mutex_with_optional_nargs-s����(�(�f�5���3�3�5��
�����Y��X�=N�=N�	�	P�	�����Y��X�=N�=N�	�	P�%������,�,�.��6rc�R�[R"SS9nUR5nURS5 [R
"5 [R"S[5 UR5nSSS5 WRS5 URS[RS9 URS5 URS	5 URS
5 [R"S5nURUR5U5 g!,(df   N�=f)Nrrrsr/z--haxz--hoxr�z--hexr�z--numzw        usage: PROG [-h] [--spam SPAM | [--hax HAX | --hex HEX] | --eggs EGGS]
                    [--num NUM]
        )
r6r7r�r�r�r�r�r�r�r�r�rrO)rr=r��ggrs     r�test_nested_mutex_groups�7TestHelpUsageNoWhitespaceCrash.test_nested_mutex_groups:s����(�(�f�5���/�/�1��	���x� �
�
$�
$�
&��!�!�(�,>�?��/�/�1�B�'�	���� �
����h�&7�&7��8�
���� �	���x� ����G�$����!�
��	
����,�,�.��6�'�
&�s�,D�
D&c��[R"SS9nUR5nURSSSS9 URSSS	S9 URS
S	S9 URSSS
S9 URSS
S9 URSSS9 URSSSS9 [R
"S5nUR
UR5U5 g)Nrrz--op1�METr�)r�r�z--op2)�MET1�MET2r�z--op3r�z--op4r�z--op5z--op6r�z--op7)r�r��MET3z�        usage: PROG [-h] [--op1 [MET] | --op2 [MET1 [MET2 ...]] | --op3 [OP3 ...] |
                    --op4 MET1 [MET2 ...] | --op5 OP5 [OP5 ...] | --op6 OP6 OP6 OP6 |
                    --op7 MET1 MET2 MET3]
        �r6r7r�r�r�r�rrO�rr=r�rs    r�test_long_mutex_groups_wrap�:TestHelpUsageNoWhitespaceCrash.test_long_mutex_groups_wrapMs����(�(�f�5���/�/�1��	���w��S��9�	���w�(8���D�	���w�c��*�	���w�(8���D�	���w�c��*�	���w�a��(�	���w�(@���J����!�
��
	
����,�,�.��6rc�`�[R"SS9nUR5nURSSSS9 URSSSS9 URS	S
SS9 URS
SSS9 URSSS9 [R
"S5nUR
UR5U5 g)Nrrr�r�r,r-rCr#r z--extra-long-option-namer�r�r8z--yet-another-long-optionrQz�        usage: PROG [-h] [-v | -q | -x [EXTRA_LONG_OPTION_NAME] |
                    -y [YET_ANOTHER_LONG_OPTION] |
                    positional]
        r�r�s    r�7test_mutex_groups_with_mixed_optionals_positionals_wrap�VTestHelpUsageNoWhitespaceCrash.test_mutex_groups_with_mixed_optionals_positionals_wrap_s����(�(�f�5���/�/�1��	���t�[���>�	���t�Y�|��<�	���t�7�s��C�	���t�8���D�	���|�3��/����!�
��
	
����,�,�.��6rr#N)r&r'r(r)r�r�r�r�r�r�r�r+r#rrr�r��s%��7�7�,
7�7�7�&7�$7rr�c���\rSrSrSr\"SS9r\"S\SS9\"SS	S
SSS
9\"S/SQSS9\"SSSS/SSS9\"SSS9\"SSSS9/r\"S 5\"S!S"S9\"S#S$S%S9/4/r	S&r
\
S'-rS(rS)r
g*)+�TestHelpVariableExpansionisz:Test that variables are expanded properly in help messagesrrr z"x %(prog)s %(default)s %(type)s %%rr8r/r0�XXXz y %(prog)s %(default)s %(const)s)r.r�r2rNr"r�z$foo %(prog)s %(default)s %(choices)srMr\rrr�r��BBBz!bar %(prog)s %(default)s %(dest)s)r�r�r�rNr�zspam %(prog)s %(default)sr�rar�zbadger %(prog)s %(default)s)r�rNr�r�za %(prog)s %(default)sr�r�zb %(prog)s %(default)szw        usage: PROG [-h] [-x X] [-y] [--foo {a,b,c}] [--bar BBB] [-a A] [-b B]
                    spam badger
        a�
        positional arguments:
          spam           spam PROG None
          badger         badger PROG 0.5

        options:
          -h, --help     show this help message and exit
          -x X           x PROG None int %
          -y             y PROG 42 XXX
          --foo {a,b,c}  foo PROG None a, b, c
          --bar BBB      bar PROG baz bar

        group:
          -a A           a PROG None
          -b B           b PROG -1
        r$r#N)r&r'r(r)r*r�r�r�r�rrrNr�r+r#rrr�r�ss���D���'���D�s�5�	7��D���%�3�	5��G�_�7�	9��G�U�Q��F�E�4�	6��F�4�5��H�c�(E�F���

�W����3�4���b�'?�@�
�	�!���E����D�"�Grr�c�@�\rSrSrSr\"SSS9r/r/rSr	\	S-r
SrS	rg
)�&TestHelpVariableExpansionUsageSuppliedi�z@Test that variables are expanded properly when usage= is presentrz%(prog)s FOO�r
rz         usage: PROG FOO
        rvr$r#Nr/r#rrr�r��s=��J���n�=���� "���E����D�
�Grr�c�:�\rSrSrSr\"SSS9r/r/rSr	\	r
SrSrg	)
�$TestHelpVariableExpansionNoArgumentsi�z;Test that variables are expanded properly with no argumentsrFrVz        usage: PROG
        r$r#Nr/r#rrr�r��s1��E����7���� "���E��D��Grr�c�f�\rSrSrSr\"S\RS9r\"SSS9\"SS	S9/r	/r
S
rSrSr
Srg
)�TestHelpSuppressUsagei�z3Test that items can be suppressed in usage messagesrr�r"rr�r��	spam helpz�        positional arguments:
          spam        spam help

        options:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        r$r#N)r&r'r(r)r*r�r6r�r�r�rrNrr�r+r#rrr�r��sO��=���h�.?�.?�@���G�*�%��F��%���!#���D�
�E��Grr�c�l�\rSrSrSr\"SSS9r\"S\RS9\"SS	S9/r	/r
S
r\S-rSr
S
rg)�TestHelpSuppressOptionali�z?Test that optional arguments can be suppressed in help messagesrFrVr"r�r�r�z!        usage: PROG spam
        zA
        positional arguments:
          spam  spam help
        r$r#N�r&r'r(r)r*r�r�r6r�r�rrrNr�r+r#rrr�r��s[��I����7���G�(�+�+�,��F��%���!#��
�E����D�
�Grr�c��\rSrSrSr\"SS9r\"SSS9\"SS	S9/r\"S
5\"S\RS9/4/r
Sr\S
-rSr
Srg)�TestHelpSuppressOptionalGroupi�z<Test that optional groups can be suppressed in help messagesrrr"rr�r�r�r�r\�2        usage: PROG [-h] [--foo FOO] spam
        ��
        positional arguments:
          spam        spam help

        options:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        r$r#N)r&r'r(r)r*r�r�r�r6r�rrrNr�r+r#rrr�r��sq��F���'���G�*�%��F��%���


�W���G�(�*;�*;�<�=�>�!��
�E����D��Grr�c�j�\rSrSrSr\"SS9r\"SSS9\"S\RS9/r	/r
S	r\S
-rSr
Srg
)�TestHelpSuppressPositionalizATest that positional arguments can be suppressed in help messagesrrr"rr�r�z-        usage: PROG [-h] [--foo FOO]
        �o
        options:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        r$r#Nr�r#rrr�r�sY��K���'���G�*�%��F��*�*�+���!#��
�E����D��Grr�c�L�\rSrSrSr\"SS9r\"SSSS9/r/rS	r	\	S
-r
SrSrg
)�TestHelpRequiredOptionaliz.Test that required options don't look optionalrrr"Tr�r�rNz+        usage: PROG [-h] --foo FOO
        r�r$r#Nr/r#rrr�r�sK��8���'���G�d��4���!#��
�E����D��Grr�c�^�\rSrSrSr\"SSSS9r\"SSS	S
9\"SSS
S9/r/rSr	\	S-r
SrSrg)�TestHelpAlternatePrefixCharsi+z:Test that options display with different prefix charactersrz^;F)r
rwrxz^^foor,rrz;bz;;barrr�z-        usage: PROG [^^foo] [;b BAR]
        z^
        options:
          ^^foo          foo help
          ;b, ;;bar BAR  bar help
        r$r#Nr/r#rrr�r�+s[��D���T�E�J���G�L�z�:��D�'�
�+���!#��
�E����D��Grr�c�X�\rSrSrSr\"SSS9r\"SSS9\"S	S
S9/r/rSr	\	S-r
S
rSrg)�TestHelpNoHelpOptionali@z=Test that the --help argument can be suppressed help messagesrFrVr"rr�r�r�z-        usage: PROG [--foo FOO] spam
        zv
        positional arguments:
          spam       spam help

        options:
          --foo FOO  foo help
        r$r#Nr/r#rrr�r�@sU��G����7���G�*�%��F��%���!#��
�E����D��Grr�c�Z�\rSrSrSr\"SS9r\"S5\"S5/r/rSr	\	S-r
S	rS
rg)�TestHelpNoneiWz1Test that no errors occur if no help is specifiedrrr"r�r�z�
        positional arguments:
          spam

        options:
          -h, --help  show this help message and exit
          --foo FOO
        r$r#Nr/r#rrr�r�WsM��;���'���G���F����!#��
�E����D��Grr�c
�~�\rSrSrSr\"SS9r\"SSSSS	9\"S
SSS
S	9\"SSSSS	9\"SSSSS	9/r/rSr	\	S-r
SrSrg)�TestHelpTupleMetavarOptionalioz"Test specifying metavar as a tuplerrr�rxr���W1�W2r�r r%r���X1�X2r8r�r���Y1�Y2�Y3r3r5r���Z1z]        usage: PROG [-h] [-w W1 [W2 ...]] [-x [X1 [X2 ...]]] [-y Y1 Y2 Y3] [-z [Z1]]
        z�
        options:
          -h, --help        show this help message and exit
          -w W1 [W2 ...]    w
          -x [X1 [X2 ...]]  x
          -y Y1 Y2 Y3       y
          -z [Z1]           z
        r$r#Nr/r#rrr�r�osx��,���'���D�s�#�|�<��D�s�#�|�<��D�s�!�-?�@��D�s�#�x�8�	��!#��
�E����D��Grr�c
�~�\rSrSrSr\"SS9r\"SSSSS	9\"S
SSS
S	9\"SSSSS	9\"SSSSS	9/r/rSr	\	S-r
SrSrg)�TestHelpTupleMetavarPositionali�z2Test specifying metavar on a Positional as a tuplerrrxrr�r�r�r%rr�r�r�rr�r�r5r r�r�zI        usage: PROG [-h] W1 [W2 ...] [X1 [X2 ...]] Y1 Y2 Y3 [Z1]
        z�
        positional arguments:
          W1 W2       w help
          X1 X2       x help
          Y1 Y2 Y3    y help
          Z1          z help

        options:
          -h, --help  show this help message and exit
        r$r#Nr/r#rrr�r��sx��<���'���C�h�c�<�@��C�h�c�<�@��C�h�a�1C�D��C�h�c�7�;�	��!#��
�E��
�
�D��Grr�c��\rSrSrSr\"S\RSS9r\"SSS9\"S	S
S9/r	\"SSS
9\"SSS9/4/r
Sr\S-rSr
Srg)�TestHelpRawTexti��Test the RawTextHelpFormatterr�7Keep the formatting
    exactly as it is written

here
�r
�formatter_classrr"z-    foo help should also
appear as given herer�r�r�r�?    This text
  should be indented
    exactly like it is here
rr\r�>        usage: PROG [-h] [--foo FOO] [--bar BAR] spam
        a�
        Keep the formatting
            exactly as it is written

        here

        positional arguments:
          spam        spam help

        options:
          -h, --help  show this help message and exit
          --foo FOO       foo help should also
                      appear as given here

        title:
              This text
            should be indented
              exactly like it is here

          --bar BAR   bar help
        r$r#N)r&r'r(r)r*r�r6�RawTextHelpFormatterr�r�rrrNr�r+r#rrr�r��s���'��
�X�%B�%B����	�G�1�	2��F��%���

�W�#B�
C��g�J�
'�	(�	*�!��
�E����D�,�Grr�c��\rSrSrSr\"S\RSS9r\"SSS9\"S	S
S9/r	\"SSS
9\"SSS9/4/r
Sr\S-rSr
Srg)�TestHelpRawDescriptioni�r�rr�r�r"z4  foo help should not
    retain this odd formattingr�r�r�rr�rr\rr�a�
        Keep the formatting
            exactly as it is written

        here

        positional arguments:
          spam        spam help

        options:
          -h, --help  show this help message and exit
          --foo FOO   foo help should not retain this odd formatting

        title:
              This text
            should be indented
              exactly like it is here

          --bar BAR   bar help
        r$r#N)r&r'r(r)r*r�r6�RawDescriptionHelpFormatterr�r�rrrNr�r+r#rrr�r��s���'��
�X�%I�%I����	�G�;�	<��F��%���

�W�#B�
C��g�J�
'�	(�	*�!��
�E����D�*�Grr�c�$�\rSrSrSr\"S\RSS9r\"SSS9\"S	S
SS9\"S
SSS9\"S\RSSS9\"S\RS\RS9\"SSSS9\"SSS9\"SSSSS 9/r\"S!SS"9\"S#\SS$S%9/4/r
S&r\S'-rS(rS)rg*)+�TestHelpArgumentDefaultsiz&Test the ArgumentDefaultsHelpFormatterrrr�r"z)foo help - oh and by the way, %(default)sr�r\r,rrz
--requiredTz	some helpr�z--tazzWhether to taz it)r.rNr�z--corgezWhether to corge itr�zSet the quuxr0)rNr�r�r�rar��woodenzbadger help�r�r�rNrrr�rY)r�r�rNz�        usage: PROG [-h] [--foo FOO] [--bar] --required REQUIRED [--taz | --no-taz]
                    [--corge | --no-corge] [--quux QUUX] [--baz BAZ]
                    spam [badger]
        a�
        description

        positional arguments:
          spam                 spam help
          badger               badger help (default: wooden)

        options:
          -h, --help           show this help message and exit
          --foo FOO            foo help - oh and by the way, None
          --bar                bar help (default: False)
          --required REQUIRED  some help
          --taz, --no-taz      Whether to taz it (default: True)
          --corge, --no-corge  Whether to corge it
          --quux QUUX          Set the quux (default: 42)

        title:
          description

          --baz BAZ            baz help (default: 42)
        r$r#N)r&r'r(r)r*r�r6�ArgumentDefaultsHelpFormatterr�r�r�r�r�rrrNr�r+r#rrr�r�s���0��
�X�%K�%K�!�#��
	�G�E�F��G�L�z�:��L�4�k�:��G�H�:�:�$�d�	4��I�h�<�<�&��0A�0A�	C��H�>�2�6��F��%��H�C��
�F���

�W�-�	0�

�g�C��*�
=�	>�	@�!��
�E�
���D�,�Grr�c�P�\rSrSrSr\"SSS9r\"SSSS	S
9/r/rSr	\	S-r
S
rSrg)�TestHelpVersionActioni;z,Test the default help for the version actionrrr�-Vr�r�z3.6r�z&        usage: PROG [-h] [-V]
        z�
        description

        options:
          -h, --help     show this help message and exit
          -V, --version  show program's version number and exit
        r$r#Nr/r#rrr�r�;sK��6���M�B���t�[��E�R�S�� "��
�E����D��Grr�c�x�\rSrSrSr\"SS9r\"SSSS\RS	9\"S
SS9\"S
SS9/r	/r
Sr\S-rSr
g)�TestHelpVersionActionSuppressiOzCTest that the --version argument can be suppressed in help messagesrrr�r�r�r�)r.r�rNr"rr�r�r�r�r�r#N)r&r'r(r)r*r�r�r6r�r�rrrNr+r#rrr�r�Ose��M���'���D�+�i���"�"�	$��G�*�%��F��%�	��!#��
�E����Drr�c	��\rSrSrSr\"SSS9r\"SSSS	S
9/rSVVVs/sHn[US9PM snnnrS
r	\	S-r
SrSrgs snnnf)�TestHelpSubparsersOrderingih�5Test ordering of subcommands in help matches the coder�display some subcommandsrr�r�r�r(r�)r!r�r�r�r�rI�6        usage: PROG [-h] [-v] {a,b,c,d,e} ...
        z�
        display some subcommands

        positional arguments:
          {a,b,c,d,e}

        options:
          -h, --help     show this help message and exit
          -v, --version  show program's version number and exit
        r.r#N)
r&r'r(r)r*r�r�r�rrrNr�r+)�.0rtr�s000rr�r�hsv��?���'A�C���t�[��E�R�S��*C�D�)B��!�d�^�)B�D��
�E��
�
�D��G��'Ds�Ar�c��\rSrSrSr\"SSS9r\"SSSS	S
9/rSr\VVVVs/sHup[XS9PM snnnnr	S
r
\
S-rSrSr
gs snnnnf)�"TestHelpSubparsersWithHelpOrderingi�r�rr�rr�r�r�r(r�))r!za subcommand help)r�zb subcommand help)r�zc subcommand help)r�zd subcommand help)r�ze subcommand help)rtrNr�a�
        display some subcommands

        positional arguments:
          {a,b,c,d,e}
            a            a subcommand help
            b            b subcommand help
            c            c subcommand help
            d            d subcommand help
            e            e subcommand help

        options:
          -h, --help     show this help message and exit
          -v, --version  show program's version number and exit
        r.r#N)r&r'r(r)r*r�r�r��subcommand_datarrrNr�r+)r�rtrNr�s0000rr�r��s��?���'A�C���t�[��E�R�S���O�0?�@�/>���!�d�6�/>�@��
�E����D�"�G��1@s�A

r�c�~�\rSrSrSr\"SS\RS9r\"S\	S9\"S\S9\"S	\
S
S9/r/rSr
\
S
-rSrSrg)�TestHelpMetavarTypeFormatteri�c��U$r^r#r�s r�custom_type�(TestHelpMetavarTypeFormatter.custom_type�s���
rrr)r
rr�r!r�r�r�z
SOME FLOAT)r�r�zF        usage: PROG [-h] [-b custom_type] [-c SOME FLOAT] int
        z�
        description

        positional arguments:
          int

        options:
          -h, --help      show this help message and exit
          -b custom_type
          -c SOME FLOAT
        r$r#N)r&r'r(r)r�r�r6�MetavarTypeHelpFormatterr�r�r�r�rrrNr�r+r#rrr�r��sr�����M�+3�+L�+L�N���s��-��t�+�6��t�%��F�H��!#��
�E����D��Grr�c�"�\rSrSrSrSrSrSrg)�!TestHelpUsageLongSubparserCommandi�z<Test that subparser commands are formatted correctly in helpNc�"�Sn[R"SUS9nURSSSS9nURSS	S
9 URSSS
9 URS
SS
9 UR	5nURU[R"S55 g)Nc�,�[R"USS9$)N�2)�max_help_position)r6r�rs r�custom_formatter�LTestHelpUsageLongSubparserCommand.test_parent_help.<locals>.custom_formatter�s���0�0���L�Lrr)r
r�r�CMDzcommand to use)rr�rNrsz
add somethingr��removezremove somethingza-very-long-commandzcommand that does somethinga}            usage: PROG [-h] CMD ...

            options:
              -h, --help             show this help message and exit

            commands:
              CMD                    command to use
                add                  add something
                remove               remove something
                a-very-long-command  command that does something
        )r6r7r%r'rPrr�r�)rr�
parent_parser�cmd_subparsersrs     rr�2TestHelpUsageLongSubparserCommand.test_parent_help�s���	M�!�/�/�� 0�
�
�
'�5�5�J�>C�;K�6�M��	�!�!�%�'6�	"�	8�	�!�!�(�'9�	"�	;�	�!�!�"7�'D�	"�	F�$�/�/�1������h�o�o�7�'
�	rr#)r&r'r(r)r*r�rr+r#rrrr�s��F��G�!rrc��\rSrSrSrSS.SjrSS.SjrSrSrS	r	S
r
SrSrS
r
SrSrSrSrSrSrSrSrSrg)�TestInvalidArgumentConstructorsi�z-Test a bunch of invalid Argument constructorsN)�errmsgc�x�[R"5nUR"[XR/UQ70UD6 gr^)r6r7rWr�r��rrr�r�r=s     r�assertTypeError�/TestInvalidArgumentConstructors.assertTypeError�s8���(�(�*�����y�&�2E�2E�	0� $�	0�(.�	0rc�x�[R"5nUR"[XR/UQ70UD6 gr^)r6r7rWr�r�rs     r�assertValueError�0TestInvalidArgumentConstructors.assertValueErrors8���(�(�*�����z�6�3F�3F�	0� $�	0�(.�	0rc��URSSS9 URSSS9 URSSS9 URS0S9 g)	Nr )rqr8r3)�callbackr#)�
callback_args)�callback_kwargs�rr!s r�test_invalid_keyword_arguments�>TestInvalidArgumentConstructors.test_invalid_keyword_argumentssN�����T�t��,����T�E��2����T���4����T�2��6rc��UR5 SH*nURUS9 URUS9 SSS5 M, g!,(df   M>=f)N�r�r�r�r-)rrH�rr.s  r�test_missing_destination�8TestInvalidArgumentConstructors.test_missing_destinationsF������3�F����V��,��$�$�F�$�3�-�,�4�,�,�s�A�
A	c�H�URS5 URS5 g)Nr=z---�rr!s r�test_invalid_option_strings�;TestInvalidArgumentConstructors.test_invalid_option_stringss�����d�#����e�$rc�(�URSS5 g)Nr"z+foor$r!s r�test_invalid_prefix�3TestInvalidArgumentConstructors.test_invalid_prefixs�����g�v�.rc�X�URSSS9 URS[[4S9 g)Nr"r�r�)rr�r�r!s rr��1TestInvalidArgumentConstructors.test_invalid_types,�����g�E��2����g�S�%�L��9rc��URSSS9 URSSS9 URSSS9 URSSSS	9 g)
Nr r3r-rrr")r�r�z
store-truezunknown action)r.rr$r!s r�test_invalid_action�3TestInvalidArgumentConstructors.test_invalid_actionsV�����d�5��1����e�E��2����g�.A��B����g�l�%5�	�	7rc��[R"5nURSS9 UR[5nURSSS9 SSS5 URS[
WR55 g!,(df   N4=f)Nr3rTrqrrz+dest supplied twice for positional argument)r6r7r�rr�r�rr�r�s   r�test_multiple_dest�2TestInvalidArgumentConstructors.test_multiple_dest$sm���(�(�*�������'�
�
�
�z�
*�b�����E��2�+��
�
�C��"�,�,�'�	)�+�
*�s�A9�9
Bc	��SH�nURUS9 [[S9[SS9[SS/S94HCnURUS	9 UR"SSU0UD6 UR"SSU0UD6 SSS5 ME URS
US
S9 URSUS
S9 SSS5 M� g!,(df   M�=f!,(df   M�=f)N)r/r,r�rrr-r�r�r�r!r�r�)�attrsr r.r%rr�)r r$)rHr&r�r)rr.r3s   r�test_no_argument_actions�8TestInvalidArgumentConstructors.test_no_argument_actions,s���0�F����V��,�"��n�d��o�"�C��:�6�8�E����E��2��,�,�J�&�J�E�J��,�,�I��I�5�I�3�2�8�
�$�$�T�&��$�B��$�$�S��q�$�A�-�,�0�
3�2��-�,�s#�3B>�)B,	�1.B>�,
B;
�6B>�>
C
	c��SH=nURUS9 URSSUS9 URSSUS9 SSS5 M? g!,(df   MQ=f)N)r,r�rr-r r3r�r�r��rHrr s  r�!test_no_argument_no_const_actions�ATestInvalidArgumentConstructors.test_no_argument_no_const_actions8sU��<�F����V��,��$�$�T��v�$�F��$�$�T��V�$�D�-�,�=�,�,�s�#A�
A	c
�,�SH|nURUS9 US:XaSOUnURSSUSUS3S	9 URS
SUSUS3S	9 SH%nURSSX1S
9 URS
SX1S
9 M' SSS5 M~ g!,(df   M�=f)Nrr-r�r�r rz
nargs for z actions must be != 0)r�r.rr�)r�r�r�r3)r2r�r.)rHr)rr.�action_namer�s    r�#test_more_than_one_argument_actions�CTestInvalidArgumentConstructors.test_more_than_one_argument_actionsBs���3�F����V��,�*0�H�*<�h�&���%�%�d�!�F�'��}�4I�J�&�L��%�%�f�A�f�'��}�4I�J�&�L�+�E��)�)�$�e�05�*�F��)�)�&��05�*�F�+�-�,�4�,�,�s�A"B�
B	c��SH,nURUS9 URSSUS9 SSS5 M. g!,(df   M@=f)N)r/rr-r r�r�r7r s  r�test_required_const_actions�;TestInvalidArgumentConstructors.test_required_const_actionsSs>��5�F����V��,��$�$�T��V�$�D�-�,�6�,�,�s	�4�
A	c��URSSS9 URSSSS9 URSS[RS9 g)Nr`�parsersr-r)r.r
)r.r�)rr6r7r!s r�"test_parsers_action_missing_params�BTestInvalidArgumentConstructors.test_parsers_action_missing_paramsYsK�����Y�y��9����Y�y�v��F����Y�y�*2�*A�*A�	�	Crc�$�URSSS9 g)Nr`r�r-rr!s r�test_version_missing_params�;TestInvalidArgumentConstructors.test_version_missing_params_s�����Y�y��9rc�$�URSSS9 g)Nr3Trsrr!s r�test_required_positional�8TestInvalidArgumentConstructors.test_required_positionalbs�����U�T��2rc	��^�"SS[5m"U4SjS[5n[R"5nUR	TUR
SUTTS9 UR	TUR
SUTTS9 g)Nc��\rSrSrSrg)�ITestInvalidArgumentConstructors.test_user_defined_action.<locals>.Successigr#Nr�r#rr�SuccessrMgrJrrNc�.>�\rSrSrSU4SjjrSrSrg)�HTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Actionijc�8>�US:XaUTLa
UTLaT"5eggg)Nr�r#)r�option_stringsrUr2r�r�rNs      �rr�QTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__init__ls2����6�>���'�"�g�-�")�)�O�.�(�"rc��gr^r#r�s   rr��QTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__call__ws��rr#N)F)r&r'r(r)rr�r+)rNs�rr�rPjs���#(�	
,�
rr�rs)r.r�r2r�)r�rr6r7rr�)rr�r=rNs   @r�test_user_defined_action�8TestInvalidArgumentConstructors.test_user_defined_actionesy���	�i�	�	�V�	� �(�(�*�����'�6�#6�#6��!'���	�	I����'�6�#6�#6��!'���	�	Irr#)r&r'r(r)r*rrrr!r%r(r�r-r0r4r8r<r?rCrFrIrVr+r#rrrr�sh��7�,0�0�
.2�0�
7�4�%�/�:�7�)�
B�E�F�"E�C�:�3�Irrc� �\rSrSrSrSrSrg)�TestActionsReturnedi�c�@�[R"5nURS5nURURS5 URSS5nURURS5 URSS5nURURS5 g)	Nr"r3r�r\rqr r8r%)r6r7r�rrUrs   rr\�TestActionsReturned.test_dest�s����(�(�*���$�$�W�-��������e�,��$�$�T�7�3��������e�,��$�$�T�4�0��������c�*rc�4�[R"5nURSSSS[SS/SSS	S
9	nUR	UR
S5 UR	URS5 UR	URS5 UR	UR[5 UR	URSS/5 UR	URS5 UR	URS5 UR	URS	5 g)Nr"r�r0r�r�r�r{�BARrr)r�r2r�r�r�rNr�rU)
r6r7r�r�rr�r2r�r�r�rNr�rUrs   r�	test_misc�TestActionsReturned.test_misc�s����(�(�*���$�$�W�C�r�-/�c�A�q�6�*/��U�%�L��	
������s�+�������r�*��������,�������c�*�������!�Q��0�������e�,��������/�������e�,rr#N)r&r'r(r)r\r^r+r#rrrYrY�s��+�-rrYc�,�\rSrSrSrSrSrSrSrg)�TestConflictHandlingi�c�J�UR[[RSS9 g)Nr3)�conflict_handler)rr�r6r7r!s r�
test_bad_type�"TestConflictHandling.test_bad_type�s"�����*�h�&=�&=�+0�	�	2rc��[R"5nURS5 UR[RURS5 URS5 UR[RURS5 g)Nr rs)r6r7r�rrXr<s  r�test_conflict_error�(TestConflictHandling.test_conflict_error�sn���(�(�*�����D�!����(�0�0� �-�-�t�	5����H�%����(�0�0� �-�-�x�	9rc��[RnU"SSS9nURSSS9 URSSS9 URUR	5[
R"S55 URS	S
S9 URS	SS9 URUR	5[
R"S
55 g)Nr�resolve)r
rcr zOLD Xr�zNEW Xz�            usage: PROG [-h] [-x X]

            options:
              -h, --help  show this help message and exit
              -x X        NEW X
            rs�OLD_SPAMrR�NEW_SPAMz�            usage: PROG [-h] [-x X] [--spam NEW_SPAM]

            options:
              -h, --help       show this help message and exit
              -x X             NEW X
              --spam NEW_SPAM
            )r6r7r�rrPr�r�)rr3r=s   r�test_resolve_error�'TestConflictHandling.test_resolve_error�s����,�,�
���)�D�����D�w��/����D�w��/�����+�+�-�x���@�0�	�	���H�j��9����H�j��9�����+�+�-�x���@�0�	rc���[R"5nUR5nURSS/S9 UR	[R
URS5 UR	[R
URS5 UR	[R
URSS/S9 UR	[R
URSS/S9 g)N�fullname�aliasr�r�)r6r7r%r'rrX)rr=�sps   r�test_subparser_conflict�,TestConflictHandling.test_subparser_conflict�s����(�(�*��
�
"�
"�
$��
�
�
�j�7�)�
�4����(�0�0��-�-��	5����(�0�0��-�-��	2����(�0�0��-�-��:�,�	�	H����(�0�0��-�-��7�)�	�	Err#N)	r&r'r(r)rdrgrmrsr+r#rrrara�s��2�9��2Errac�N�\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
Srg
)�TestOptionalsHelpVersionActionsi�z!Test the help and version actionsc��UR[5nURUR55 SSS5 UR	UR5WRR5 g!,(df   NC=fr^)rr�rGrrrPr�r�)rr=r
r�s    r�assertPrintHelpExit�3TestOptionalsHelpVersionActions.assertPrintHelpExit�sY��
�
�
�2�
3�r����h�n�n�.�/�4�����+�+�-�r�|�|�/B�/B�C�4�
3�s� A3�3
Bc�F�UR[URU5 gr^)rr�rGrIs   rr�9TestOptionalsHelpVersionActions.assertArgumentParserError�s�����-�v�/@�/@�$�Grc��[5nURSSSSS9 URUS5 URUS5 UR[[
US5 g)	Nr�r�r�r�r�rAr}�format_version�r�r�rxrrBr�r<s  r�test_version�,TestOptionalsHelpVersionActions.test_version�sV��+�-�����D�+�i���O�� � ���.�� � ���2����.�'�6�;K�Lrc��[SS9nURSSSSS9 UR[5nUR	S/5 SSS5 URSWRR5 g!,(df   N5=f)	N�PPPrr�r�r�z%(prog)s 3.5r�zPPP 3.5
�r�r�rr�rGrr�r�r�s   r�test_version_format�3TestOptionalsHelpVersionActions.test_version_format�sl��+��7�����D�+�i���X�
�
�
�2�
3�r����t�f�%�4�����b�l�l�&9�&9�:�4�
3�s�A3�3
Bc��[SS9nURSSSSS9 URUS5 URUS	5 UR[[
US
5 g)NFr�r�r�r�r�r�rAr}r})r�r�rrrBr�r<s  r�test_version_no_help�4TestOptionalsHelpVersionActions.test_version_no_help�sX��+�U�;�����D�+�i���O��&�&�v�t�4��&�&�v�x�8����.�'�6�;K�Lrc��[SS9nURSSSS9 UR[5nUR	S/5 SSS5 URSWRR5 g!,(df   N5=f)Nr�rr�r�z%(prog)s 3.7r�zXXX 3.7
r�r�s   r�test_version_action�3TestOptionalsHelpVersionActions.test_version_action�sj��+��7�����D��N��K�
�
�
�2�
3�r����t�f�%�4�����b�l�l�&9�&9�:�4�
3�s�A2�2
Bc��[SS9nURUS5 URUS5 URUS5 URUS5 g)NFr�rAr}r�r�)r�rr<s  r�test_no_help�,TestOptionalsHelpVersionActions.test_no_helpsL��+�U�;���&�&�v�t�4��&�&�v�x�8��&�&�v�t�4��&�&�v�{�;rc��[5nURSSS9 URSSS9 URUS5 URUS5 URUS5 UR	[
[US5 g)	Nr rNr-r8r�r�r�r})r�r�rxrrrBr�r<s  r�test_alternate_help_version�;TestOptionalsHelpVersionActions.test_alternate_help_version
su��+�-�����D���0����D���3�� � ���.��&�&�v�t�4��&�&�v�{�;����.�'�6�;K�Lrc�R�[5nURSSSS9 URSSS9 URS5 /S	QnUS
S/-nUHZnUHnU<SU<3nM URUWS
-5 URXS-5 UR[[
US5 M\ g)Nr�r�r�r�r r,r-r�)r$r r3z-x barzbaz -xz--bad-optionzfoo bar bazz %s rAr}r}r~)rr=�valid_prefixes�valid_suffixes�prefix�suffixrs       r�!test_help_version_extra_arguments�ATestOptionalsHelpVersionActions.test_help_version_extra_argumentss���+�-�����K�	�5��I����D���6����C� �?��'�>�=�*I�I��$�F�(��(.��7��)��$�$�V�V�d�]�;��$�$�V�h�->�?����n�g�v�?O�P�%rr#N)r&r'r(r)r*rxrrr�r�r�r�r�r�r+r#rrrvrv�s8��+�D�
H�M�;�M�;�<�M�Qrrvc�H�\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
g)
�TestStringsi(z3Test str()  and repr() on Optionals and Positionalsc�Z�[[4HnURU"U5U5 M gr^)rr"r)r�obj�
result_stringrBs    r�assertStringEqual�TestStrings.assertStringEqual+s$���$�K�D����T�#�Y�
�6� rc�j�[R"/SQSSSS/SQSSS	S
9	nSnURX5 g)N)r"r�r�r�r�r�r0�r�r�r�F�HELP�METAVAR�	rRrUr�r�r�r�r�rNr�z�Action(option_strings=['--foo', '-a', '-b'], dest='b', nargs='+', const=None, default=42, type='int', choices=[1, 2, 3], required=False, help='HELP', metavar='METAVAR', deprecated=False))r6r�r�)r�optionr�s   r�
test_optional�TestStrings.test_optional/sE�����0���������	��
3�	�
	
���v�.rc�|�[R"/S[SS/SQSSSS9	nS	[-nURX5 g)
Nr%r�r�)r�g�?r�TzH HH HzMV MV MVr�z�Action(option_strings=[], dest='x', nargs='?', const=None, default=2.5, type=%r, choices=[0.5, 1.5, 2.5], required=True, help='H HH H', metavar='MV MV MV', deprecated=False))r6r�r�r�)r�argumentr�s   r�
test_argument�TestStrings.test_argumentAsO���?�?������#����	 ��
 �#(�
(�	�
	
���x�0rc�T�[R"SSS9nSnURX5 g)Nr0r�ruzNamespace(foo=42, bar='spam')�r6r�r��rr�r�s   r�test_namespace�TestStrings.test_namespaceSs'��
�
�
�B�F�
3��0�����r�*rc�Z�[R"S0SS0D6nSnURX5 g)N�"�quotezNamespace(**{'"': 'quote'})r#r�r�s   r�'test_namespace_starkwargs_notidentifier�3TestStrings.test_namespace_starkwargs_notidentifierXs,��
�
�
�
1�3��.�
1��2�����r�*rc�^�[R"SSS0SS0D6nSnURX5 g)Nr!r�r�r�z Namespace(a=1, **{'"': 'quote'})r#r�r�s   r�2test_namespace_kwargs_and_starkwargs_notidentifier�>TestStrings.test_namespace_kwargs_and_starkwargs_notidentifier]s1��
�
�
�
6�!�
6��W�~�
6��7�����r�*rc�Z�[R"S0SS0D6nSnURX5 g)N�validTzNamespace(valid=True)r#r�r�s   r�$test_namespace_starkwargs_identifier�0TestStrings.test_namespace_starkwargs_identifierbs,��
�
�
�
2�7�D�/�
2��(�����r�*rc�t�[R"SS9nS[R-nURX5 g)NrrzvArgumentParser(prog='PROG', usage=None, description=None, formatter_class=%r, conflict_handler='error', add_help=True))r6r7�
HelpFormatterr�)rr=r�s   r�test_parser�TestStrings.test_parsergs:���(�(�f�5��
�'�5�5�
6�	�	
���v�.rr#N)r&r'r(r)r*r�r�r�r�r�r�r�r�r+r#rrr�r�(s-��=�7�/�$1�$+�
+�
+�
+�
/rr�c�&�\rSrSrSrSrSrSrg)�
TestNamespaceisc��[R"5nUR[[US5 [R"SSS9nURURS5 URURS5 g)Nr%r0r�r�)r6r�rrBr�rr!r�r�s  r�test_constructor�TestNamespace.test_constructorus^��
�
�
�
!�����.�'�2�s�;�
�
�
�"��
/��������r�"�������v�&rc���[R"SSS9n[R"SSS9n[R"SS9n[R"SS9nURX5 URX5 URX5 URX#5 URX$5 UR	X:g5 UR	X:g5 UR	X#:g5 UR	X$:g5 g)Nr�r�r�)r�r!)r!r)r6r�r�assertNotEqual�
assertTrue)r�ns1�ns2�ns3�ns4s     r�
test_equality�TestNamespace.test_equality}s���� � �1��*��� � �1��*��� � �1�%��� � �1�%������"����C�%����C�%����C�%����C�%�����
�#�����
�#�����
�#�����
�#rc���[R"SSS9nURURS5[5 URURS5[5 g)Nr�r�r�)r6r�rKr��NotImplemented�__ne__r�s  r�$test_equality_returns_notimplemented�2TestNamespace.test_equality_returns_notimplemented�s@��
�
�
�!�q�
)���
�
�b�i�i��o�~�6��
�
�b�i�i��o�~�6rr#N)r&r'r(r)r�r�r�r+r#rrr�r�ss��'�$� 7rr�c�&�\rSrSrSrSrSrSrg)�TestEncodingi�c��[RRU5upUS-
n[USSS9nUR	5 SSS5 g!,(df   g=f)Nz.pyr7r
ry)rbrk�splitextr{rP)rrkr�rFs    r�_test_module_encoding�"TestEncoding._test_module_encoding�sD���'�'�"�"�4�(�����
��
�$��g�
.�!�
�F�F�H�/�
.�
.�s�A�
Ac�B�UR[R5 gr^)r�r6�__file__r!s r�test_argparse_module_encoding�*TestEncoding.test_argparse_module_encoding�s���"�"�8�#4�#4�5rc�.�UR[5 gr^)r�r�r!s r�"test_test_argparse_module_encoding�/TestEncoding.test_test_argparse_module_encoding�s���"�"�8�,rr#N)r&r'r(r)r�r�r�r+r#rrr�r��s���6�-rr�c��\rSrSrSrSrg)�TestArgumentErrori�c�l�Sn[R"SU5nUR[U5U5 g)Nz
my error here)r6rXrr)rr	r�s   r�test_argument_error�%TestArgumentError.test_argument_error�s-�����&�&�t�S�1������U��S�)rr#N)r&r'r(r)r�r+r#rrr�r��s��*rr�c��\rSrSrSrSrg)�TestArgumentTypeErrori�c��Sn[SSS9nURSUS9 UR[5nUR	S/5 SSS5 URSWRR5 g!,(df   N5=f)	Nc�.�[R"S5e)N�spam!)r6�ArgumentTypeErrorr�s rr��<TestArgumentTypeError.test_argument_type_error.<locals>.spam�s���,�,�W�5�5rrFrVr%r�r�z-usage: PROG x
PROG: error: argument x: spam!
)r�r�rr�rGrr�r�)rr�r=r�s    r�test_argument_type_error�.TestArgumentTypeError.test_argument_type_error�su��	6�,��%�H�����C�d��+�
�
�
�2�
3�r����u�g�&�4����J����,�,�	.�4�
3�s�A5�5
Br#N)r&r'r(r)r�r+r#rrr�r��s��
.rr�c�&�\rSrSrSrSrSrSrg)�TestMessageContentErrori�c���[SSS9nURS[S9 URS[SS9 URS	[S
S9 UR	[
5nUR
/5 SSS5 [WR5nURUS5 URUS5 URUS	5 UR	[
5nUR
S
/5 SSS5 [UR5nURUS5 URUS5 URUS	5 UR	[
5nUR
S
S/5 SSS5 [UR5nURUS5 URUS5 URUS	5 g!,(df   GNR=f!,(df   N�=f!,(df   N}=f)Nrr$r��req_posr��-req_optTr��need_oner�)r�r��req_opt�myXargumentz
-req_opt=1)
r�r�rr�rr�rGr�rJr��rr=r�r	s    r�%test_missing_argument_name_in_message�=TestMessageContentError.test_missing_argument_name_in_message�s���+��r�B�����I�C��0����J�S�4��@����J�S���<�
�
�
�2�
3�r����b�!�4��"�,�,�������i�(�����i�(�����j�)�
�
�
�2�
3�r����}�o�.�4��"�,�,�������i�(�����i�(�����j�)�
�
�
�2�
3�r����}�l�;�<�4��"�,�,�������i�(�����i�(�����j�)�#4�
3��4�
3��4�
3�s$�F;�G
�G�;
G
�
G�
G,c���[SSS9nURS[S9 URS[SS9 URS	[S
SS9 UR[5nUR/5 SSS5 [WR5nURUS5 URUS5 URUS
5 UR[5nURS/5 SSS5 [UR5nURUS5 URUS5 URUS
5 g!,(df   N�=f!,(df   Nk=f)Nrr$r�r�r�z	--req_optTr�z	--opt_optr�)r�r�r�r��opt_optz--req_opt=1)r�r�rr�r�rr�rGr�rJr�r�s    r�%test_optional_optional_not_in_message�=TestMessageContentError.test_optional_optional_not_in_message�s*��+��r�B�����I�C��0����K�c�D��A����K�d�#�$(�	�	*�
�
�
�2�
3�r����b�!�4��"�,�,�������i�(�����i�(�����i�(�
�
�
�2�
3�r����}�o�.�4��"�,�,�������i�(�����i�(�����i�(�4�
3��4�
3�s�E�E�
E�
Ec�N�[SSS9nURS5 URSSSS9 UR[5nUR	/5 SSS5 [WR5nURUS5 URUS5 g!,(df   NH=f)	Nrr$r�r��optional_positionalr�r�r�)	r�r�rr�rGrr�rJr�r�s    r�'test_optional_positional_not_in_message�?TestMessageContentError.test_optional_positional_not_in_message�s���+��r�B�����I�&����1��f��M�
�
�
�2�
3�r����b�!�4��"�,�,�������i�(�����3�4�	4�
3�s�B�
B$r#N)r&r'r(r)r�r�rr+r#rrr�r��s��*�2)�&5rr�c��\rSrSrSrSrg)�TestTypeFunctionCallOnlyOnceic��^�U4Sjn[R"5nURSUSS9 URSR	55nTR[
SS9U5 g)Nc�*>�TRUS5 g)Nr��
foo_converted�r)�string_to_convertrs �rr��LTestTypeFunctionCallOnlyOnce.test_type_function_call_only_once.<locals>.spams������.��8�"rr"rqrfz--foo spam!rr=)r6r7r�rGrrr��rr�r=r�s`   r�!test_type_function_call_only_once�>TestTypeFunctionCallOnlyOnce.test_type_function_call_only_onces[���	#��(�(�*�����G�$���>�� � ��!4�!4�!6�7�������0�$�7rr#N)r&r'r(r)rr+r#rrrrs��8rrc�2�\rSrSrSrSrSrSrSrSr	g)	�TestDeprecatedArgumentsic�H�[R"5nURSSSS9 [5nUR	SS/5 SSS5 WR5nUR
US5 URURS5S5 [5nUR	SS/5 SSS5 UR5nUR
US	5 URURS5S5 [5nUR	/S
Q5 SSS5 UR5nUR
US5 UR
US	5 URURS5S5 [5nUR	/SQ5 SSS5 UR5nUR
US5 URURS5S5 g!,(df   GN�=f!,(df   GNI=f!,(df   N�=f!,(df   N�=f)
NrAr"T)�
deprecatedr��%warning: option '--foo' is deprecated�
is deprecatedr��"warning: option '-f' is deprecated)r"r�rA�hamr�)r"r�r"r)	r6r7r�rrGrrJrr�rr=r�s   r�test_deprecated_option�.TestDeprecatedArguments.test_deprecated_options����(�(�*�����D�'�d��;�
�
�&����w��/�0�����"������!H�I�������o�6��:�
�
�&����t�V�n�-�����"������!E�F�������o�6��:�
�
�&����<�=�����"������!H�I�����!E�F�������o�6��:�
�
�&����?�@�����"������!H�I�������o�6��:�/�
���
���
���
�s/�G�G0�H�>H�
G-�0
G?�
H�
H!c�`�[R"5nURSS[RSS9 [	5nURS/5 SSS5 WR
5nURUS5 URURS5S5 [	5nURS/5 SSS5 UR
5nURUS5 URURS5S5 [	5nURS	/5 SSS5 UR
5nURUS
5 URURS5S5 [	5nURSS	/5 SSS5 UR
5nURUS5 URUS
5 URURS5S5 g!,(df   GN�=f!,(df   GNH=f!,(df   N�=f!,(df   N�=f)NrAr"T)r.rrrr�rr�z(warning: option '--no-foo' is deprecatedr�)
r6r7r�r�rrGrrJrrrs   r�test_deprecated_boolean_option�6TestDeprecatedArguments.test_deprecated_boolean_option4s����(�(�*�����D�'�(�2P�2P�]a��b�
�
�&����w�i�(�����"������!H�I�������o�6��:�
�
�&����t�f�%�����"������!E�F�������o�6��:�
�
�&����z�l�+�����"������!K�L�������o�6��:�
�
�&����w�
�3�4�����"������!H�I�����!K�L�������o�6��:�/�
���
���
���
�s0�G*�(G<�H�8H�*
G9�<
H�
H�
H-c�J�[R"5nURSSSS9 URSSSS9 [5nUR	/5 SSS5 WR5nUR
URS5S5 [5nUR	S/5 SSS5 UR5nURUS	5 UR
URS5S
5 [5nUR	SS/5 SSS5 UR5nURUS	5 URUS5 UR
URS5S
5 g!,(df   GN$=f!,(df   N�=f!,(df   N�=f)Nr3r�T�r�rrqrrr��%warning: argument 'foo' is deprecatedr�rz%warning: argument 'bar' is deprecatedr��	r6r7r�rrGrrrrJrs   r�test_deprecated_arguments�1TestDeprecatedArguments.test_deprecated_argumentsQsN���(�(�*�����E����>����E����>�
�
�&����b�!�����"��������o�6��:�
�
�&����v�h�'�����"������!H�I�������o�6��:�
�
�&����v�u�o�.�����"������!H�I�����!H�I�������o�6��:�!�
��
�
���
�s$�E1�F�?F�1
F�
F�
F"c��[R"5nURSSSS9 [5nUR	/5 SSS5 WR5nUR
URS5S5 [5nUR	S/5 SSS5 UR5nURUS5 UR
URS5S	5 [5nUR	SS
/5 SSS5 UR5nURUS5 UR
URS5S	5 g!,(df   GN=f!,(df   N�=f!,(df   Nu=f)Nr3r�Trrrr�rr�rrrs   r�test_deprecated_varargument�3TestDeprecatedArguments.test_deprecated_varargumenths(���(�(�*�����E����>�
�
�&����b�!�����"��������o�6��:�
�
�&����v�h�'�����"������!H�I�������o�6��:�
�
�&����v�u�o�.�����"������!H�I�������o�6��:��
��
�
���
�s#�E�E �.E1�
E� 
E.�1
E?c�H�[R"5nUR5nURSS/SS9 URS5 [	5nURS/5 SSS5 WR
5nURURS5S5 [	5nURS/5 SSS5 UR
5nURUS5 URURS5S	5 [	5nURS/5 SSS5 UR
5nURUS
5 URURS5S	5 g!,(df   GN=f!,(df   N�=f!,(df   Nu=f)Nr3rrT)rrrqrrz$warning: command 'foo' is deprecatedr�z$warning: command 'baz' is deprecated)
r6r7r%r'rrGrrrrJ)rr=r*r�s    r�test_deprecated_subparser�1TestDeprecatedArguments.test_deprecated_subparser}sF���(�(�*���*�*�,�
����e�e�W���F����e�$�
�
�&����u�g�&�����"��������o�6��:�
�
�&����u�g�&�����"������!G�H�������o�6��:�
�
�&����u�g�&�����"������!G�H�������o�6��:��
��
�
���
�s$�E0�)F�F�0
E?�
F�
F!r#N)
r&r'r(r)rrrr"r%r+r#rrrrs��;�:;�:;�.;�*;rrc�,�\rSrSrSrSrSrSrSrg)�TestTypeFunctionCalledOnDefaulti�c�^�U4Sjn[R"5nURSUSS9 UR/5nTR	[SS9U5 g)Nc�*>�TRUS5 g)Nrrr)�int_to_convertrs �rr��]TestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_default.<locals>.spam�s������^�Q�/�"rr"rrfr=�r6r7r�rGrr�r
s`   r�/test_type_function_call_with_non_string_default�OTestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_default�sQ���	#��(�(�*�����G�$���:�� � ��$��������D�)rc��Sn[R"5nURSUSS9 UR/5nUR	[SS9U5 g)Nc��g)Nrr#)r+s rr��YTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_default.<locals>.spam�s��"rr"�0rfrr=r-r
s    r�+test_type_function_call_with_string_default�KTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_default�sQ��	#��(�(�*�����G�$���<�� � ��$�������0�$�7rc��Sn[R"5nURSUSS9 UR/5nUR	[SS9U5 g)Nc��US-$)Nr�r#)�str_to_converts rr��YTestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_default.<locals>.extend�s
��!�C�'�'r�--testr�rfz**)r�r-)rr�r=r�s    r�)test_no_double_type_conversion_of_default�ITestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_default�sR��	(��(�(�*�����H�6�3��?�� � ��$��	
�������-rc��[R"5nURSS[/SS9 UR	/5nURUR/5 g)Nr:r�r�)rUr�r�r.)r6r7r�rrGrr�rIs   r�test_issue_15906�0TestTypeFunctionCalledOnDefault.test_issue_15906�sT���(�(�*�����H�6��$&�x�	�	9�� � ��$��������B�'rr#N)	r&r'r(r)r.r4r;r>r+r#rrr(r(�s��	*�8�
.�(rr(c�>�\rSrSrSrSrSrSrSrSr	Sr
S	rg
)�TestParseKnownArgsi�c�P�[R"5nURS5 g)Nr#�r6r7rGr<s  r�test_arguments_tuple�'TestParseKnownArgs.test_arguments_tuple�����(�(�*�����"�rc�P�[R"5nUR/5 gr^rCr<s  r�test_arguments_list�&TestParseKnownArgs.test_arguments_list�rFrc�r�[R"5nURS5 URS5 g)Nr%r$�r6r7r�rGr<s  r�test_arguments_tuple_positional�2TestParseKnownArgs.test_arguments_tuple_positional�s,���(�(�*�����C� ����&�!rc�t�[R"5nURS5 URS/5 g)Nr%rKr<s  r�test_arguments_list_positional�1TestParseKnownArgs.test_arguments_list_positional�s.���(�(�*�����C� ����3�%� rc���[R"5nURS5 URSR	55up#UR[
SS9U5 URSS/U5 g)Nr"z--foo F --bar --baz�Fr=r\r�)r6r7r�rDrrr�)rr=r��extrass    r�test_optionals�!TestParseKnownArgs.test_optionals�sc���(�(�*�����G�$��.�.�/D�/J�/J�/L�M���������d�+����'�7�+�V�4rc�(�[R"5nURSSS[S9 URSSS9 URS5 /S	QnUR	U5up4UR[
S
SSS
9U5 UR/SQU5 g)Nr�r�r�)r�r2r�rsr�r-ra)ror�r"r�r.r�r�Tro)�vr�ra)r�r"r�)r6r7r�r�rDrr�)rr=r�r�rSs     r�
test_mixed�TestParseKnownArgs.test_mixed�s����(�(�*�����D��1�3��?����H�]��;����H�%�2���.�.�t�4�������a�d�3�7��>����,�f�5rc��[R"5nURSSSS9 UR/5nUR	[/S9U5 g)Nr%r�r�)r�r�r$r-rIs   r�test_zero_or_more_optional�-TestParseKnownArgs.test_zero_or_more_optional�sI���(�(�*�����C�s�J��?�� � ��$������b��4�(rr#N)r&r'r(r)rDrHrLrOrTrXr[r+r#rrrArA�s%����"�
!�
5�	6�)rrAc�8�\rSrSrSrSrSrSrSrSr	Sr
g	)
�TestDoubleDashi�c�P�[R"SS9nURSS5 URSSS9 URS/5nUR	[S	/S
9U5 UR
[RSURSS	/5 URS/5nUR	[S	/S
9U5 UR
[RSURSS	/5 UR/S
Q5nUR	[SSS/S
9U5 UR/SQ5nUR	[SSS/S
9U5 UR/SQ5nUR	[S/SQS
9U5 UR/SQ5nUR	[S/SQS
9U5 g)NFrTrAr"rqr�r��--foo=--r=ruz(argument -f/--foo: expected one argument�-f--)r"r!r=r�r�r!r�r�)r!r�r"r�)r!r=r�r"r�)r!r=r�r=r�r"r�)r!r�r=r�r"r�)r6r7r�rGrr�rWrXrIs   r�test_single_argument_option�*TestDoubleDash.test_single_argument_option�s����(�(�u�=�����D�'�*����E���-�� � �*��.�������"�-�t�4����x�5�5�6�������	0�� � �&��*�������"�-�t�4����x�5�5�6�����d�|�	-�� � �!?�@�������#�s��4�d�;�� � �!9�:�������#�s��4�d�;�� � �!?�@�������*B�C�T�J�� � �!J�K�������*M�N�PT�Urc��[R"SS9nURSSSS9 URSSS9 URS/5nUR	[S	//S
9U5 URSS	/5nUR	[//S
9U5 URS/5nUR	[S	//S
9U5 URSS	/5nUR	[//S
9U5 UR/SQ5nUR	[S
S/SS/S
9U5 UR/SQ5nUR	[SS/S
S/S
9U5 UR/SQ5nUR	[S/SQS
9U5 UR
/SQ5up#UR	[S/S
S/S
9U5 UR	US	S/5 g)NFrTrAr"r�r�rqr`r=rura)r"r!r�r=r�r�r!r�r�r�)r!r�r"r�r�)r!r=r�r"r�r�)r!r�r"r�r=r�)r6r7r�rGrr�rD)rr=r�r�s    r�test_multiple_argument_option�,TestDoubleDash.test_multiple_argument_options����(�(�u�=�����D�'���5����E���-�� � �*��.��������B�/��6�� � �'�4��1��������+�T�2�� � �&��*��������B�/��6�� � �$���.��������+�T�2�� � �!D�E�������c�
��c�
�;�T�B�� � �!>�?�������c�
��c�
�;�T�B�� � �!D�E�������*G�H�$�O��,�,�-P�Q�
��������C��:�6��=������c�{�+rc�D�[R"SS9nURS5 URSSS9 UR/SQ5nUR	[SS	S
/S9U5 UR/SQ5nUR	[SS	S
/S9U5 UR/S
Q5nUR	[SS	S
/S9U5 UR/SQ5nUR	[S/SQS9U5 UR/SQ5nUR	[S/SQS9U5 g)NFrTr3rqr�r��r=r!r�r�r!r�r�ru�r!r=r�r��r!r�r=r��r!r=r�r=r��r�r=r�)r=r=r!r=r�r�r=r-rIs   r�test_multiple_double_dashes�*TestDoubleDash.test_multiple_double_dashes's	���(�(�u�=�����E�"����E���-�� � �!6�7�������#�s��4�d�;�� � �!6�7�������#�s��4�d�;�� � �!6�7�������#�s��4�d�;�� � �!<�=�������)9�:�D�A�� � �!B�C�������*?�@�$�Grc��[R"SS9nURS5 URSSS9 UR/SQ5nUR	[SS	S
/S9U5 UR/SQ5nUR	[SS	S
/S9U5 UR/S
Q5nUR	[S/SQS9U5 UR/SQ5nUR	[S/SQS9U5 [R"SS9nURS5 URSSS9 UR/SQ5nUR	[S/SQS9U5 g)NFrTr3rqr�r�rhr!r�r�rurirjrlrkr")r"r!r=r�r=r�)r=r�r=r�r-rIs   r�test_remainder�TestDoubleDash.test_remainder7s7���(�(�u�=�����E�"����E���/�� � �!6�7�������#�s��4�d�;�� � �!6�7�������#�s��4�d�;�� � �!6�7�������)9�:�D�A�� � �!<�=�������)9�:�D�A��(�(�u�=�����G�$����E���/�� � �!E�F�������)?�@�$�Grc�.�[R"SS9nURS5 UR5nUR	S5nURS5 URSSS9 UR/S	Q5nUR
[S
SSS
/S9U5 UR/SQ5nUR
[S
S/SQS9U5 UR/SQ5nUR
[S
S/SQS9U5 UR/SQ5nUR
[S
S/SQS9U5 UR/SQ5nUR
[S
SSS
/S9U5 UR/SQ5nUR
[S
SSS
/S9U5 UR/SQ5nUR
[S
S/SQS9U5 UR/SQ5nUR
[S
S/SQS9U5 UR[RSUR
/SQ5 g)NFrTr3r_rArqr�r�)r%r_r!r�rAr�r%r�r!r��r3rFrq)r%r_r!r�r=rAr�)r!r�rAr�)r%r_r!r=r�rAr�)r%r_r=r!r�rAr�)r%r=r_r!r�rAr�)r=r%r_r!r�rAr�)r%r_r=r!r=r�)r!r=r�)r%r=r_r=r!r=r��invalid choice: '--')r=r%r=r_r!r��
r6r7r�r%r'rGrr�rWrX�rr=r*r,r�s     r�test_subparser�TestDoubleDash.test_subparserKs����(�(�u�=�����E�"��*�*�,�
��'�'��.�����T�"����U�#��.�� � �!B�C�������s��c�
�;�T�B�� � �!H�I�������t�1F�G��N�� � �!H�I�������t�1F�G��N�� � �!H�I�������t�1F�G��N�� � �!H�I�������s��c�
�;�T�B�� � �!H�I�������s��c�
�;�T�B�� � �!C�D�������t�1A�B�D�I�� � �!I�J�������t�1A�B�D�I����x�5�5�"����A�	Crc��[R"SS9nURSSS9 UR5nUR	S5nURS5 URSSS9 UR/S	Q5nUR
[S
S/SS
S/S9U5 UR[RSUR
/SQ5 g)NFrTr"r�r�r_rArq)	r"r%r�r=r_r!r�rAr�r%r�r�r!r�rsrt)r"r%r=r=r_r!r�rurvs     r�-test_subparser_after_multiple_argument_option�<TestDoubleDash.test_subparser_after_multiple_argument_optiongs����(�(�u�=�����G�3��/��*�*�,�
��'�'��.�����T�"����U�#��.�� � �!V�W�������c�
�c��S�z�B�D�I����x�5�5�"����J�	Lrr#N)r&r'r(r)rbrermrprwrzr+r#rrr^r^�s%��V�0,�.H� H�(C�8Lrr^c�2�\rSrSrSrSrSrSrSrSr	g)	�TestIntermixedArgsizc	��[R"SS9nURSSS9 URSSSS	9nURS
5 URSS[S
9 SR	5nURU5nUR
[SS
S/SQS9U5 URU5upEUR
[SS
SS/S9U5 UR
SS/U5 URU5upEUR
[SS
S/SQS9U5 UR
/U5 SR	5nURU5upEUR
[SS
S/SQS9U5 UR
S/U5 SR	5nURU5upEUR
[SS
S/SQS9U5 UR
S/U5 SR	5nURU5upEUR
[SS
S/SQS9U5 UR
S/U5 URUR5 UR
URS5 g)Nrrr"r3rTr\rqTri�cmd�restr�)r�r�zcmd --foo x 1 --bar y 2 3r�r%r�)rqrr3r�r�r�r.z!cmd --foo x --error 1 2 --bar y 3z--errorz!cmd --foo x 1 --error 2 --bar y 3z!cmd --foo x 1 2 --error --bar y 3)
r6r7r�r�r�parse_intermixed_argsrr�rD�parse_known_intermixed_argsrnrr�)rr=rqr�r�rSs      r�
test_basic�TestIntermixedArgs.test_basic{s)���(�(�f�5�����G�%��0��!�!�'���!�E�����E�"����F�#�C��8�*�0�0�2���+�+�D�1��������C�i�H�$�O��.�.�t�4���������C�q�c�B�D�I����#�s��V�,��9�9�$�?���������C�i�H�$�O�����V�$�3�8�8�:���9�9�$�?���������C�i�H�$�O����)��f�-�2�8�8�:���9�9�$�?���������C�i�H�$�O����)��f�-�2�8�8�:���9�9�$�?���������C�i�H�$�O����)��f�-�	
���&�,�,�'�������t�,rc�d�[SS9nURS5 URS5 URSSS9 SR5nUR[5nURU5 SSS5 UR
[WR5S	5 g!,(df   N4=f)
Nrrr3r%r�r�r�r�z\.\.\.)	r�r�rrr�r�rJrr�)rr=r�r�s    rrp�!TestIntermixedArgs.test_remainder�s���+��8�����D�!����C� ����C�u��-��!�!�#���
�
�y�
)�R��(�(��.�*�����R�\�\�*�I�6�*�
)�s�!B!�!
B/c�N�[R"SSS9nURSS9nURSSSS	9 URS
SS9 URS
SSSS9 UR	SR55nUR
[SS/SSS9U5 UR	SR55nUR
[SS/SSS9U5 UR[RSURSR55 UR
URS5 g)NrF�r
rUTrsr"r,r{rrsr|r�rar�rcr}r�z	--foo 1 2rrr�)rar3r�z	1 --foo 2z-one of the arguments --foo --spam is requiredrq)r6r7r�r�r�rrr�rWrXr��rr=r�r�s    r�test_required_exclusive�*TestIntermixedArgs.test_required_exclusive�s���(�(�f�E�J���3�3�T�3�B��
���7�<�e��D�
���8�&��1����H�C��8��L��+�+�K�,=�,=�,?�@������C��:�4�d�C�T�J��+�+�K�,=�,=�,?�@������C��:�4�d�C�T�J����x�5�5�?��,�,�e�k�k�m�	=�	
�������.rc��[R"SSS9nURSS9nURSSSS	9 URS
SS9 URS
SSSS9 UR	S/5nUR[
SSSS9U5 UR	SS/5nUR[
SSSS/S9U5 UR[RSUR/5 UR[RSUR/SQ5 UR[RSUR/SQ5 URURS5 g)NrFr�Trsr"r,r{rrsr|r�rar�rcr}r�r�r!r�z4one of the arguments --foo --spam badger is requiredz0argument badger: not allowed with argument --foo)r"r!r�)r!r"r�)
r6r7r�r�r�rr�rWrXr�r�s    r�'test_required_exclusive_with_positional�:TestIntermixedArgs.test_required_exclusive_with_positional�sL���(�(�f�E�J���3�3�T�3�B��
���7�<�e��D�
���8�&��1�
���8�3��(��K��+�+�W�I�6�������4��<�d�C��+�+�S�#�J�7�������D�#�s��D�d�K����x�5�5�F��,�,�b�	2�	
���x�5�5�B��,�,�.A�	C�	
���x�5�5�B��,�,�.A�	C�	
�������.rc�Z�[SS9nUR[URS/5 g)Nrrr!)r�rr�r�r<s  r�test_invalid_args�$TestIntermixedArgs.test_invalid_args�s'��+��8�����-�v�/K�/K�c�U�Srr#N)
r&r'r(r)r�rpr�r�r�r+r#rrr}r}zs��$-�L7�/� /�,Trr}c��\rSrSrSrSrg)�!TestIntermixedMessageContentErrori�c�N�[SSS9nURS[S9 URS[SS9 UR	[
5nUR
/5 SSS5 [WR5nURUS5 URUS	5 UR	[
5nUR/5 SSS5 [UR5nURUS5 URUS	5 g!,(df   N�=f!,(df   NY=f)
Nrr$r�r�r�r�Tr�r�)
r�r�rr�rr�rGr�rJr�r�s    rr��GTestIntermixedMessageContentError.test_missing_argument_name_in_message�s���+��r�B�����I�C��0����J�S�4��@�
�
�
�2�
3�r����b�!�4��"�,�,�������i�(�����i�(�
�
�
�2�
3�r��(�(��,�4��"�,�,�������i�(�����i�(�4�
3��4�
3�s�	D�1D�
D�
D$r#N)r&r'r(r)r�r+r#rrr�r��s��)rr�c�2�\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
SrS
rSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSr Sr!S r"S!r#S"r$S#r%S$r&S%r'S&r(S'r)S(r*S)r+S*r,S+r-S,r.S-r/S.r0S/r1S0r2S1r3S2r4g3)4�TestAddArgumentMetavari�z,length of metavar tuple does not match nargsc�N�[R"5nURSXS9 g)Nr"�r�r�)r6r7r�)rr�r�r=s    r�do_test_no_exception�+TestAddArgumentMetavar.do_test_no_exception�s#���(�(�*�����G�5��Brc��[R"5nUR[5nUR	SXS9 SSS5 URWRRSUR5 g!,(df   NB=f)Nr"r�r)	r6r7rr�r�rr�r��EXPECTED_MESSAGE)rr�r�r=r�s     r�do_test_exception�(TestAddArgumentMetavar.do_test_exception�sf���(�(�*��
�
�
�z�
*�b�����u��F�+�������*�*�1�-�t�/D�/D�E�+�
*���A8�8
Bc�$�URSSS9 g)Nrrr��r�r!s r�test_nargs_None_metavar_string�5TestAddArgumentMetavar.test_nargs_None_metavar_strings���!�!��c�!�:rc�4�URS[5S9 g)Nr��r��tupler!s r�test_nargs_None_metavar_length0�6TestAddArgumentMetavar.test_nargs_None_metavar_length0s�����T�5�7��;rc�$�URSSS9 g)Nr$r�r�r!s r�test_nargs_None_metavar_length1�6TestAddArgumentMetavar.test_nargs_None_metavar_length1s���!�!��f�!�=rc�$�URSSS9 g)N�rrr�r��r�r!s r�test_nargs_None_metavar_length2�6TestAddArgumentMetavar.test_nargs_None_metavar_length2
s�����T�:��>rc�$�URSSS9 g)Nrr�r�r!s r�test_nargs_None_metavar_length3�6TestAddArgumentMetavar.test_nargs_None_metavar_length3
s�����T�?��Crc�$�URSSS9 g)Nr�rrr�r�r!s r�"test_nargs_optional_metavar_string�9TestAddArgumentMetavar.test_nargs_optional_metavar_string����!�!��S�!�9rc�4�URS[5S9 g)Nr�r�r�r!s r�#test_nargs_optional_metavar_length0�:TestAddArgumentMetavar.test_nargs_optional_metavar_length0������S�%�'��:rc�$�URSSS9 g)Nr�r$r�r�r!s r�#test_nargs_optional_metavar_length1�:TestAddArgumentMetavar.test_nargs_optional_metavar_length1����!�!��V�!�<rc�$�URSSS9 g)Nr�r�r�r�r!s r�#test_nargs_optional_metavar_length2�:TestAddArgumentMetavar.test_nargs_optional_metavar_length2s�����S�*��=rc�$�URSSS9 g)Nr�rr�r�r!s r�#test_nargs_optional_metavar_length3�:TestAddArgumentMetavar.test_nargs_optional_metavar_length3������S�/��Brc�$�URSSS9 g)Nr�rrr�r�r!s r�$test_nargs_zeroormore_metavar_string�;TestAddArgumentMetavar.test_nargs_zeroormore_metavar_string#r�rc�4�URS[5S9 g)Nr�r�r�r!s r�%test_nargs_zeroormore_metavar_length0�<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length0&r�rc�$�URSSS9 g)Nr�r$r�r�r!s r�%test_nargs_zeroormore_metavar_length1�<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length1)r�rc�$�URSSS9 g)Nr�r�r�r�r!s r�%test_nargs_zeroormore_metavar_length2�<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length2,����!�!��Z�!�@rc�$�URSSS9 g)Nr�rr�r�r!s r�%test_nargs_zeroormore_metavar_length3�<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length3/r�rc�$�URSSS9 g)Nr�rrr�r�r!s r�#test_nargs_oneormore_metavar_string�:TestAddArgumentMetavar.test_nargs_oneormore_metavar_string4r�rc�4�URS[5S9 g)Nr�r�r�r!s r�$test_nargs_oneormore_metavar_length0�;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length07r�rc�$�URSSS9 g)Nr�r$r�r�r!s r�$test_nargs_oneormore_metavar_length1�;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length1:s�����S�&��9rc�$�URSSS9 g)Nr�r�r�r�r!s r�$test_nargs_oneormore_metavar_length2�;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length2=r�rc�$�URSSS9 g)Nr�rr�r�r!s r�$test_nargs_oneormore_metavar_length3�;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length3@r�rc�$�URSSS9 g)Nr�rrr�r�r!s r�#test_nargs_remainder_metavar_string�:TestAddArgumentMetavar.test_nargs_remainder_metavar_stringEs���!�!��s�!�;rc�4�URS[5S9 g)Nr�r�)r�r�r!s r�$test_nargs_remainder_metavar_length0�;TestAddArgumentMetavar.test_nargs_remainder_metavar_length0Hs���!�!��u�w�!�?rc�$�URSSS9 g)Nr�r$r�r�r!s r�$test_nargs_remainder_metavar_length1�;TestAddArgumentMetavar.test_nargs_remainder_metavar_length1Ks���!�!��v�!�>rc�$�URSSS9 g)Nr�r�r�r�r!s r�$test_nargs_remainder_metavar_length2�;TestAddArgumentMetavar.test_nargs_remainder_metavar_length2Ns���!�!��z�!�Brc�$�URSSS9 g)Nr�rr�r�r!s r�$test_nargs_remainder_metavar_length3�;TestAddArgumentMetavar.test_nargs_remainder_metavar_length3Qs���!�!���!�Grc�$�URSSS9 g)N�A...rrr�r�r!s r� test_nargs_parser_metavar_string�7TestAddArgumentMetavar.test_nargs_parser_metavar_stringVs���!�!���!�<rc�4�URS[5S9 g)Nr�r�r�r!s r�!test_nargs_parser_metavar_length0�8TestAddArgumentMetavar.test_nargs_parser_metavar_length0Ys�����V�U�W��=rc�$�URSSS9 g)Nr�r$r�r�r!s r�!test_nargs_parser_metavar_length1�8TestAddArgumentMetavar.test_nargs_parser_metavar_length1\s���!�!���!�?rc�$�URSSS9 g)Nr�r�r�r�r!s r�!test_nargs_parser_metavar_length2�8TestAddArgumentMetavar.test_nargs_parser_metavar_length2_s�����V�Z��@rc�$�URSSS9 g)Nr�rr�r�r!s r�!test_nargs_parser_metavar_length3�8TestAddArgumentMetavar.test_nargs_parser_metavar_length3bs�����V�_��Erc�$�URSSS9 g)Nr�rrr�r�r!s r�test_nargs_1_metavar_string�2TestAddArgumentMetavar.test_nargs_1_metavar_stringg����!�!��3�!�7rc�4�URS[5S9 g)Nr�r�r�r!s r�test_nargs_1_metavar_length0�3TestAddArgumentMetavar.test_nargs_1_metavar_length0j������Q����8rc�$�URSSS9 g)Nr�r$r�r�r!s r�test_nargs_1_metavar_length1�3TestAddArgumentMetavar.test_nargs_1_metavar_length1ms���!�!��6�!�:rc�$�URSSS9 g)Nr�r�r�r�r!s r�test_nargs_1_metavar_length2�3TestAddArgumentMetavar.test_nargs_1_metavar_length2p������Q�
��;rc�$�URSSS9 g)Nr�rr�r�r!s r�test_nargs_1_metavar_length3�3TestAddArgumentMetavar.test_nargs_1_metavar_length3s������Q���@rc�$�URSSS9 g)Nr�rrr�r�r!s r�test_nargs_2_metavar_string�2TestAddArgumentMetavar.test_nargs_2_metavar_stringxr		rc�4�URS[5S9 g)Nr�r�r�r!s r�test_nargs_2_metavar_length0�3TestAddArgumentMetavar.test_nargs_2_metavar_length0{r
	rc�$�URSSS9 g)Nr�r$r�r�r!s r�test_nargs_2_metavar_length1�3TestAddArgumentMetavar.test_nargs_2_metavar_length1~������Q���7rc�$�URSSS9 g)Nr�r�r�r�r!s r�test_nargs_2_metavar_length2�3TestAddArgumentMetavar.test_nargs_2_metavar_length2�s���!�!��:�!�>rc�$�URSSS9 g)Nr�rr�r�r!s r�test_nargs_2_metavar_length3�3TestAddArgumentMetavar.test_nargs_2_metavar_length3�r	rc�$�URSSS9 g)Nr�rrr�r�r!s r�test_nargs_3_metavar_string�2TestAddArgumentMetavar.test_nargs_3_metavar_string�r		rc�4�URS[5S9 g)Nr�r�r�r!s r�test_nargs_3_metavar_length0�3TestAddArgumentMetavar.test_nargs_3_metavar_length0�r
	rc�$�URSSS9 g)Nr�r$r�r�r!s r�test_nargs_3_metavar_length1�3TestAddArgumentMetavar.test_nargs_3_metavar_length1�r"	rc�$�URSSS9 g)Nr�r�r�r�r!s r�test_nargs_3_metavar_length2�3TestAddArgumentMetavar.test_nargs_3_metavar_length2�r	rc�$�URSSS9 g)Nr�rr�r�r!s r�test_nargs_3_metavar_length3�3TestAddArgumentMetavar.test_nargs_3_metavar_length3�s���!�!��?�!�Crr#N)5r&r'r(r)r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r	r	r	r	r	r	r	r	r	r 	r$	r'	r*	r-	r0	r3	r6	r+r#rrr�r��s��E��C�F�;�<�>�?�D�
:�;�=�>�C�
:�;�=�A�C�
:�;�:�A�C�
<�@�?�C�H�
=�>�@�A�F�
8�9�;�<�A�
8�9�8�?�A�
8�9�8�<�Drr�c�4�\rSrSrSrSrSrSrSrSr	Sr
g	)
�TestInvalidNargsi�zinvalid nargs valuez�nargs for store actions must be != 0; if you have nothing to store, actions such as store true or store const may be more appropriatec��[R"5nUR[5nUR	SUS9 SSS5 URWRRSUR5 g!,(df   NB=f�Nr"r�r)	r6r7rr�r�rr�r��EXPECTED_RANGE_MESSAGE�rr�r=r�s    r�do_test_range_exception�(TestInvalidNargs.do_test_range_exception�sf���(�(�*��
�
�
�z�
*�b�����u��5�+�������*�*�1�-�t�/J�/J�K�+�
*�r�c��[R"5nUR[5nUR	SUS9 SSS5 URWRRSUR5 g!,(df   NB=fr;	)	r6r7rr�r�rr�r��EXPECTED_INVALID_MESSAGEr=	s    r�do_test_invalid_exception�*TestInvalidNargs.do_test_invalid_exception�sf���(�(�*��
�
�
�z�
*�b�����u��5�+�������*�*�1�-�t�/L�/L�M�+�
*�r�c�@�URSS9 URSS9 g)Nr!r��abcd)rB	r!s r�test_nargs_alphabetic�&TestInvalidNargs.test_nargs_alphabetic�s$���&�&�S�&�1��&�&�V�&�4rc�"�URSS9 g)Nrr�)r>	r!s r�test_nargs_zero� TestInvalidNargs.test_nargs_zero�s���$�$�1�$�-rr#N)r&r'r(r)rA	r<	r>	rB	rF	rI	r+r#rrr9	r9	�s'��4��L��L�N�5�.rr9	c� �\rSrSrSrSrSrg)�TestImportStari�c�p�[RH"nUR[[U55 M$ gr^)r6�__all__r�rrJs  rr��TestImportStar.test�s%���$�$�D��O�O�G�H�d�3�4�%rc�P�[[5R5VVs/sHDupURS5(aMUS:XaM%[R
"U5(aMBUPMF nnnUR
[U5[[R55 gs snnf)Nr��ngettext)	r�r6r��
startswith�inspect�ismodulerr�rN	)rrtr�r�s    r�'test_all_exports_everything_but_modules�6TestImportStar.test_all_exports_everything_but_modules�s��� $�H�~�3�3�5�
�5����O�O�C�(�
�,0�J�,>�
��#�#�E�*�
�5�	�
�	
�������x�/?�/?�(@�A��

s�B"�B"�	B"�&B"r#N)r&r'r(r)r�rU	r+r#rrrL	rL	�s
��5�BrrL	c�.^�\rSrSrU4SjrSrSrU=r$)�TestWrappingMetavari�c�z>�[TU]5 [S5UlSnURR	SUS9 g)N�9this_is_spammy_prog_with_a_long_name_sorry_about_the_namez<http[s]://example:1234>z--proxyrR)rrXr�r=r�)rr�rs  �rrX�TestWrappingMetavar.setUp�s9���
��
��0�G�
���
-����� � ��G� �<rc��URR5nURU[R"S55 g)Na            usage: this_is_spammy_prog_with_a_long_name_sorry_about_the_name
                   [-h] [--proxy <http[s]://example:1234>]

            options:
              -h, --help            show this help message and exit
              --proxy <http[s]://example:1234>
            )r=rPrr�r�)r�	help_texts  r�test_help_with_metavar�*TestWrappingMetavar.test_help_with_metavar�s4���K�K�+�+�-�	�����H�O�O�5�%�	r�r=)r&r'r(r)rXr^	r+r,r-s@rrX	rX	�s���=�	�	rrX	c��\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
SrS
rSrSrSrSrSrSrSrSrSrg)�TestExitOnErrori�c�v�[R"SSS9UlURRSS[S9 g)NFr)rUrz
--integers�N)r�r�)r6r7r=r�r�r!s rrX�TestExitOnError.setUp�s3���-�-�E�DG�I������ � ��s�� �Erc��URRSR55nURU[R
"SS95 g)Nz--integers 4r�)�integers)r=rGrrr6r�r�s  r�!test_exit_on_error_with_good_args�1TestExitOnError.test_exit_on_error_with_good_args�s:��
�[�[�
#�
#�N�$8�$8�$:�
;������X�/�/��;�<rc���UR[R5 URR	SR55 SSS5 g!,(df   g=f)Nz--integers a)rr6rXr=rGrr!s r� test_exit_on_error_with_bad_args�0TestExitOnError.test_exit_on_error_with_bad_args�s=��
�
�
�x�5�5�
6��K�K�"�"�>�#7�#7�#9�:�7�
6�
6�s�*A�
A!c��UR[RSURRSR55 g�Nz!unrecognized arguments: --foo barr�)rWr6rXr=rGrr!s r�test_unrecognized_args�&TestExitOnError.test_unrecognized_args�s4�����x�5�5�B�#�{�{�5�5�{�7H�7H�7J�	Lrc��UR[RSURRSR55 grn	)rWr6rXr=r�rr!s r�!test_unrecognized_intermixed_args�1TestExitOnError.test_unrecognized_intermixed_args�s4�����x�5�5�B�#�{�{�@�@�+�BS�BS�BU�	Wrc���URRS5 URRS5 UR[RSURR
/5 g)Nrqrr�/the following arguments are required: bar, baz$�r=r�rWr6rXrGr!s r�test_required_args�"TestExitOnError.test_required_args�sN����� � ��'���� � ��'����x�5�5�P�#�{�{�5�5�r�	;rc���URRS5 URRSSS9 UR[RSURR
/5 g)Nrqrr�BaZrRz/the following arguments are required: bar, BaZ$rv	r!s r�test_required_args_with_metavar�/TestExitOnError.test_required_args_with_metavarsS����� � ��'���� � ��� �6����x�5�5�P�#�{�{�5�5�r�	;rc���URRS5 URRSSS9 UR[RSURR
/5 g)Nrqrrr�r�ru	rv	r!s r�test_required_args_n�$TestExitOnError.test_required_args_nsS����� � ��'���� � ��a� �0����x�5�5�P�#�{�{�5�5�r�	;rc���URRS5 URRSSSS9 UR[RSURR
/5 g)Nrqrrr�)ror�r�r�z3the following arguments are required: bar, B, A, Z$rv	r!s r�!test_required_args_n_with_metavar�1TestExitOnError.test_required_args_n_with_metavarsU����� � ��'���� � ��a�� �I����x�5�5�T�#�{�{�5�5�r�	;rc���URRS5 URRSSS9 UR[RSURR
/5 g)Nrqrrr�r��*the following arguments are required: bar$rv	r!s r�test_required_args_optional�+TestExitOnError.test_required_args_optional�S����� � ��'���� � ��c� �2����x�5�5�K�#�{�{�5�5�r�	;rc���URRS5 URRSSS9 UR[RSURR
/5 g)Nrqrrr�r�r�	rv	r!s r�test_required_args_zero_or_more�/TestExitOnError.test_required_args_zero_or_morer�	rc���URRS5 URRSSS9 UR[RSURR
/5 g)Nrqrrr�r�ru	rv	r!s r�test_required_args_one_or_more�.TestExitOnError.test_required_args_one_or_more$sS����� � ��'���� � ��c� �2����x�5�5�P�#�{�{�5�5�r�	;rc���URRS5 URRSSSS9 UR[RSURR
/5 g)Nrqrrr�)�BaZ1�BaZ2r�z9the following arguments are required: bar, BaZ1\[, BaZ2]$rv	r!s r�+test_required_args_one_or_more_with_metavar�;TestExitOnError.test_required_args_one_or_more_with_metavar+sV����� � ��'���� � ��c�;K� �L����x�5�5�[�#�{�{�5�5�r�	;rc���URRS5 URRSSS9 UR[RSURR
/5 g)Nrqrrr�r�r�	rv	r!s r�test_required_args_remainder�,TestExitOnError.test_required_args_remainder2sS����� � ��'���� � ��e� �4����x�5�5�K�#�{�{�5�5�r�	;rc���URRSS9nURS5 URS5 UR[R
SURR/5 g)NTrsr\r�z,one of the arguments --bar --baz is required�r=r�r�rWr6rXrG�rr�s  r�%test_required_mutually_exclusive_args�5TestExitOnError.test_required_mutually_exclusive_args9s]�����8�8�$�8�G��
���7�#�
���7�#����x�5�5�M�#�{�{�5�5�r�	;rc�\�URR5nURS5 URSSSS9 UR[R
SURR/SQ5 UR[R
SURR/S	Q5 g)
Nr\rrr�rz	r�z.argument BaZ: not allowed with argument --bar$�r\r!r�z.argument --bar: not allowed with argument BaZ$�r!r\r�r�	r�	s  r�>test_conflicting_mutually_exclusive_args_optional_with_metavar�NTestExitOnError.test_conflicting_mutually_exclusive_args_optional_with_metavarAs������8�8�:��
���7�#�
���5��U��;����x�5�5�O�#�{�{�5�5�7J�	L�	
���x�5�5�O�#�{�{�5�5�7J�	Lrc�\�URR5nURS5 URSSSS9 UR[R
SURR/SQ5 UR[R
SURR/S	Q5 g)
Nr\rrr�)�BAZ1r�z/argument BAZ1: not allowed with argument --bar$r�	z/argument --bar: not allowed with argument BAZ1$r�	r�	r�	s  r�Ctest_conflicting_mutually_exclusive_args_zero_or_more_with_metavar1�STestExitOnError.test_conflicting_mutually_exclusive_args_zero_or_more_with_metavar1Ls������8�8�:��
���7�#�
���5��Y��?����x�5�5�P�#�{�{�5�5�7J�	L�	
���x�5�5�P�#�{�{�5�5�7J�	Lrc�\�URR5nURS5 URSSSS9 UR[R
SURR/SQ5 UR[R
SURR/S	Q5 g)
Nr\rrr�)r�	�BAZ2r�z8argument BAZ1\[, BAZ2]: not allowed with argument --bar$r�	z8argument --bar: not allowed with argument BAZ1\[, BAZ2]$r�	r�	r�	s  r�Ctest_conflicting_mutually_exclusive_args_zero_or_more_with_metavar2�STestExitOnError.test_conflicting_mutually_exclusive_args_zero_or_more_with_metavar2Ws������8�8�:��
���7�#�
���5��5E��F����x�5�5�Z�#�{�{�5�5�7J�	L�	
���x�5�5�Z�#�{�{�5�5�7J�	Lrc�`�URRS5 URRSSS9 URRS5 UR[RSURR
S/5 UR[RSURR
S	/5 UR[RS
URR
/SQ5 UR[RSURR
/SQ5 g)
Nrrr,r-�--fooglez7ambiguous option: --foob could match --foobaz, --fooblerz:ambiguous option: --foob=1 could match --foobaz, --fooble$�--foob=1z8ambiguous option: --foob could match --foobaz, --fooble$)rrrr�	r�)r�	r�	r�rv	r!s r�test_ambiguous_option�%TestExitOnError.test_ambiguous_optionbs������ � ��,���� � ��L� �A���� � ��,����x�5�5�I��K�K�"�"�X�J�	0�	
���x�5�5�L��K�K�"�"�Z�L�	2�	
���x�5�5�J��K�K�"�"�$D�	F�	
���x�5�5�L��K�K�"�"�$A�	Crc��URRS5 UR[RSURR
S/5 g)Nrz)No such file or directory: 'no-such-file'z
@no-such-filerv	r!s r�
test_os_error�TestExitOnError.test_os_errorss@����� � ��(����x�5�5�J�#�{�{�5�5��7H�	Jrr`	N)r&r'r(r)rXrh	rk	ro	rr	rw	r{	r~	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r+r#rrrb	rb	�sn��F�
=�;�L�
W�
;�;�;�;�;�;�;�;�;�;�	L�	L�	L�C�"Jrrb	c��\rSrSrSrSrg)�TestTranslationsi~c�.�UR[5 gr^)�assertMsgidsEqualr6r!s r�test_translations�"TestTranslations.test_translations�s�����x�(rr#N)r&r'r(r)r�	r+r#rrr�	r�	~s��)rr�	c�@�0[l[5[lgr^)rGrOr�rnr#rr�tearDownModuler�	�s���E�J���E�Jr�__main__r�z--snapshot-update(r8rErS	rr=rbrormr�r�r_�unittestr6r��enumr�test.supportrr�test.support.i18n_helperrrr�
TextIOWrapperr
rOr/�skip_unless_working_chmodrr[r�r�r�r�r�r7r�r�r�rr�rr+r:r@rPrRrXrZrhrkrtr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr
r
rrrr#r0r3r5r:r<r\r`rbrergrirkrmrortrwryr}r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr�r�r9r`r�	eq_stderrrlr��
eq_bstderrrGrUrbrhrn�skip_if_dac_overridervr�r�r�r�r�r�r�r�r�r�r�r�r�rr�r�rr/rWrcrlrqryr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r"r1r5r7r=rBrFrLrPrUrZr]rbrhrjrlrnrprrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrYrarvr�r�r�r�r�r�rrr(rAr^r}r�r�r9	rL	rX	rb	r�	r�	r&�lenr�r;�mainr#rr�<module>r�	sr�����	��	�
��
�������(�"�W��:�"�"�"�:�$F�H�%�%�F�:�x� � ���$�$�D�6�D�%�D�.�&��)��)�%�)�%�# �L>��!8�!8�>�q9�D�q9�f	�	��&�'7���C���n���n��4�.��
�^�
� �~��.
�>�
��n���.��$���&�N��&���(���,���.
�^�
� 
��
�	�>�	�����.���.�����.�>��&�.��"�>��"
�N�
��~���N���N���>��>��>�@
��
�	��	�	�>�	����&�^������~�����&�N��"�~��"�n��"�n��&�N��&
��
�@�~���N���N��	�^�	�	�N�	��N���>���.���>���>�����������(���"
�~�
� ���$
��
� �~���n���^���N��	�n�	��^���N���.��,���.���,�>��
�^�
�	�N�	��>�����
�.�
�
�.�
� 
��
� �~��"
��
�
��
��>��&�~��&
�.�
� 
��
� �^��6�.��2���(�.��**�L�.�*�Z�\�>��DK�x�K�0�h���h��,�,�,�W�%���h�'�	��h�'�	��n�-�	�
��
/�
�
��
/�
�/�F�/�"�L�.��03�<��3�"�\�>��.'�F�'�"����L�.�� ��,����L�.�� ��&���
�\�>�
� �
� ���
�]�
� �
�,�8�,�,
��
�$�~���.��,�>��,>�8�>�.>�N�>�BJ�X�J�$�~��T��T�0[��[�B!+�H�!+�NM��M�f@&�x�@&�D1?�f�1?�h �'�8� �F(���(�V�7�H��B!�'�8�!�H*��(�*�Z'�'�8�'�T%�7�H�%�P'���'�R/(�'�8�/(�d �G�X� �F �w�� �F ��(� �L�f��	��
-�	�
	��
(�	�
	��
&�	�
	��
1�	�
	��
0�	�
	��
7�	�
	��
0�	�
	��
>�	�X0�h�X0�|8�X�8�.
"�(�
"�&Q1�$�Q1�f	�	��*�>�5�"�E��"�l�"�H3B�|�3B�l,�<�,�^���>1�<�1�h%��%�P3��3�l6�L�6�r�<��,�\��>�L��:!�|�!�H�<��2#��#�L�<��D!�L�!�H�\��4�|��01�\�1�ht7�X�t7�n+��+�\�\��"
�<�
��L��*�|��(�L��4���*�|��(�<��*�\��.�<��0�<��6�\��8.�l�.�b-�\�-�`2�|�2�h�L��(�L��2���:'��'�V�<��:%��%�XEI�h�EI�V-�(�-�<3E�8�3E�tEQ�h�EQ�XE/�(�E/�V7�H�7�J-�8�-�$*��*�.�H�.�$65�h�65�z
8�8�
8�"};�h�};�H+(�h�+(�b*)��*)�Z|L�X�|L�F\T��\T�~)��)�0eD�X�eD�P.�x�.�@
B�X�
B� �(��0VJ�h�VJ�z)�+�)���z��
�3�8�8�}�q��S�X�X�a�[�,?�?�$�X�.�������M�M�O�r

Youez - 2016 - github.com/yon3zu
LinuXploit